Module: ProxES::Container::Plugins::Base::ClassMethods

Included in:
ProxES::Container
Defined in:
lib/proxes/container.rb

Instance Method Summary collapse

Instance Method Details

#migrationsObject



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

Return an ordered list of navigation items: ‘[’/users/‘, text:’Users’, ‘/roles/’, text:‘Roles’]



96
97
98
99
100
# File 'lib/proxes/container.rb', line 96

def navigation
  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

Load a new plugin into the current class. A plugin can be a module which is used directly, or a symbol represented a registered plugin which will be required and then used. Returns nil.

Container.plugin PluginModule
Container.plugin :csrf

Raises:



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.navigation if plugin.respond_to?(:navigation)

  nil
end

#routesObject

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

#seedersObject



108
109
110
111
112
# File 'lib/proxes/container.rb', line 108

def seeders
  Plugins.plugins.map do |_key, plugin|
    plugin.seeder if plugin.respond_to?(:seeder)
  end.compact
end

#workersObject



114
115
116
117
118
# File 'lib/proxes/container.rb', line 114

def workers
  Plugins.plugins.map do |_key, plugin|
    plugin.run_workers if plugin.respond_to?(:run_workers)
  end.compact
end