class Evrone::Common::AMQP::CLI
Public Class Methods
new()
click to toggle source
# File lib/evrone/common/amqp/cli.rb, line 13 def initialize @options = parse_options end
Public Instance Methods
run()
click to toggle source
# File lib/evrone/common/amqp/cli.rb, line 17 def run require_before_executing load_consumers consumers = find_consumers.inject({}) do |a,c| a[c] = 2 a end supervisor = Common::AMQP::Supervisor::Threaded.new consumers.each do |k,v| v.times do |n| supervisor.add k, :subscribe, n end end supervisor.run end
Private Instance Methods
find_consumers()
click to toggle source
# File lib/evrone/common/amqp/cli.rb, line 37 def find_consumers Evrone::Common::AMQP::Consumer.classes.inject([]) do |a,c| c = Kernel.const_get(c) a << c if c.method_defined? :perform a end.uniq end
load_consumers()
click to toggle source
# File lib/evrone/common/amqp/cli.rb, line 45 def load_consumers if l = @options[:load_from] path = File.expand_path(l, Dir.pwd) Dir["#{path}/**.rb"].each do |f| load f end end end
parse_options()
click to toggle source
# File lib/evrone/common/amqp/cli.rb, line 60 def parse_options options = {} OptionParser.new do |opts| opts.banner = "Usage: amqp_consumers [options]" opts.on("-r", "--require FILE", String, 'Require file before executing') do |r| options[:require] = r end opts.on("-l", "--load DIR", "Load consumers from directory") do |l| options[:load_from] = l end opts.on("-c", "--consumer CONSUMER[,NUM]", "a", "b") do |l| name,num = l.split(",") num ||= 1 options[:consumers] ||= [] options[:consumers] << [name, num.to_i] end end.parse! options end
require_before_executing()
click to toggle source
# File lib/evrone/common/amqp/cli.rb, line 54 def require_before_executing if r = @options[:require] require File.expand_path(r, Dir.pwd) end end