Method: Cyclop::Action.find_by_queue

Defined in:
lib/cyclop/action.rb

.find_by_queue(queue) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/cyclop/action.rb', line 8

def self.find_by_queue(queue)
  actions = @@actions.select{|action| action.queues.include? queue }
  if @@actions.empty?
    raise Cyclop::NoActionFound, "No action defined"
  elsif actions.empty?
    queues = @@actions.collect(&:queues).flatten.uniq.collect(&:inspect)
    raise Cyclop::NoActionFound, "No action found for #{queue.inspect} queue. Valid queues: #{queues.join(", ")}"
  elsif actions.size>1
    raise Cyclop::ActionQueueClash, "\"#{queue}\" queue belongs to multiple actions: #{actions.collect{|a| a.name}.join(", ")}"
  else
    actions.first
  end
end