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

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

Instance Method Summary collapse

Instance Method Details

#migrationsObject



91
92
93
94
95
# File 'lib/proxes/container.rb', line 91

def migrations
  Plugins.plugins.map do |_key, plugin|
    plugin.migration_folder if plugin.respond_to?(:migration_folder)
  end
end


87
88
89
# File 'lib/proxes/container.rb', line 87

def nav_items
  [] # Return an ordered list of navigation items: `[{order:0, link:'/users/' text:'Users'}, {order:1, link:'/roles/', text:'Roles'}]
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:



68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/proxes/container.rb', line 68

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



83
84
85
# File 'lib/proxes/container.rb', line 83

def routes
  {} # Return a hash of controllers with their routes as keys: `{ '/users' => ProxES::Controllers::Users }`
end