abloom (owner)

Revisions

gist: 108927 Download_button fork
public
Public Clone URL: git://gist.github.com/108927.git
init.rb
1
2
# every rails plugin should have an init.rb in the top level
PluginManager.register(MyPluginClass, :tab_generator)
plugin_manager.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class PluginManager
  class_inheritable_accessor :plugins
  self.plugins = {}
  
  class << self
    def register(plugin_class, callback_method)
      self.plugins[plugin_class] = callback_method
    end
    
    def query_plugins(request)
      returning Array.new do |arr|
        self.plugins.each do |plugin_name, callback|
          link_name, link_url = plugin_name.send(callback, request)
          arr << {:text => link_name, :url => link_url } if link_name && link_url
        end
      end
    end
  end
end
some_controller.rb
1
2
3
4
5
6
7
8
class SomeController < ActionController::Base
  before_filter :build_tabs
 
  private
  def build_tabs
    @tabs = PluginManager.query_plugins(request)
  end
end