Guest User

Untitled

a guest
Nov 30th, 2017
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.74 KB | None | 0 0
  1. ### main.rb ###
  2. require './plugin'
  3.  
  4. Dir['./plugins/*.rb'].each { |f| require f }
  5. Plugin.register_plugins
  6.  
  7. # Can we send a message to each plugin
  8. Plugin.plugins.each do |plugin|
  9.     plugin.handle_command('test')
  10. end
  11.  
  12. ### plugin.rb ###
  13. require 'set'
  14.  
  15. class Plugin
  16.     @plugins = Set.new
  17.  
  18.     def self.plugins
  19.         @plugins
  20.     end
  21.  
  22.     def self.register_plugins
  23.         Object.constants.each do |klass|
  24.             const = Kernel.const_get(klass)
  25.             if const.respond_to?(:superclass) and const.superclass == Plugin
  26.                 @plugins << const
  27.             end
  28.         end
  29.     end
  30. end
  31.  
  32. ### plugins/cat.rb ###
  33. class CatPlugin < Plugin
  34.     def handle_command(cmd)
  35.         puts "Cat got command #{cmd}"
  36.     end
  37. end
Advertisement
Add Comment
Please, Sign In to add comment