Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ### main.rb ###
- require './plugin'
- Dir['./plugins/*.rb'].each { |f| require f }
- Plugin.register_plugins
- # Can we send a message to each plugin
- Plugin.plugins.each do |plugin|
- plugin.handle_command('test')
- end
- ### plugin.rb ###
- require 'set'
- class Plugin
- @plugins = Set.new
- def self.plugins
- @plugins
- end
- def self.register_plugins
- Object.constants.each do |klass|
- const = Kernel.const_get(klass)
- if const.respond_to?(:superclass) and const.superclass == Plugin
- @plugins << const
- end
- end
- end
- end
- ### plugins/cat.rb ###
- class CatPlugin < Plugin
- def handle_command(cmd)
- puts "Cat got command #{cmd}"
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment