Over a million developers have joined DZone.

[ruby] Plugin Structure

·
plugin structure sorta thing. Use inherited to concatenate all plugins to a library in a Plugins constant in said library.


class Library
  Plugins = []
  
  def initialize#(...)
    Plugins.each do |plugin|
      # Here you can run a certain class method or grab some data from each class
    end
  end
  
  # ...
end



class LibraryPlugin
  # ...
  
  def self.inherited(sub); Library::Plugins << sub; end
end



class LibraryFooer < LibraryPlugin
  
end
class LibraryBarer < LibraryPlugin
  
end


Library::Plugins.inspect #=> [LibraryFooer, LibraryBarer]
Topics:

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}