Module: ProxES::Container::Plugins::Base::ClassMethods
- Included in:
- ProxES::Container
- Defined in:
- lib/proxes/container.rb
Instance Method Summary collapse
- #migrations ⇒ Object
- #navigation ⇒ Object
-
#plugin(plugin, *args, &block) ⇒ Object
Load a new plugin into the current class.
-
#routes ⇒ Object
Return a hash of controllers with their routes as keys: ‘{ ’/users’ => ProxES::Controllers::Users }‘.
- #seeders ⇒ Object
- #workers ⇒ Object
Instance Method Details
#migrations ⇒ Object
102 103 104 105 106 |
# File 'lib/proxes/container.rb', line 102 def migrations Plugins.plugins.map do |_key, plugin| plugin.migration_folder if plugin.respond_to?(:migration_folder) end.compact end |
#navigation ⇒ Object
96 97 98 99 100 |
# File 'lib/proxes/container.rb', line 96 def Plugins.plugins.map do |_key, plugin| plugin.nav_items if plugin.respond_to?(:nav_items) end.compact.flatten.sort_by { |h| h[:order] } end |
#plugin(plugin, *args, &block) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/proxes/container.rb', line 72 def plugin(plugin, *args, &block) raise ContainerError, 'Cannot add a plugin to a frozen Container class' if frozen? plugin = Plugins.load_plugin(plugin) if plugin.is_a?(Symbol) plugin.load_dependencies(self, *args, &block) if plugin.respond_to?(:load_dependencies) include(plugin::InstanceMethods) if defined?(plugin::InstanceMethods) extend(plugin::ClassMethods) if defined?(plugin::ClassMethods) plugin.configure(self, *args, &block) if plugin.respond_to?(:configure) # One option is to add controllers / nav on registration: @controllers.merge(plugin.controllers) if plugin.respond_to?(:controllers) @navigation << plugin. if plugin.respond_to?(:navigation) nil end |
#routes ⇒ Object
Return a hash of controllers with their routes as keys: ‘{ ’/users’ => ProxES::Controllers::Users }‘
88 89 90 91 92 |
# File 'lib/proxes/container.rb', line 88 def routes Plugins.plugins.inject({}) do |memo, plugin| memo.merge!(plugin[1].route_mappings) if plugin[1].respond_to?(:route_mappings) end end |