Class: Cyclop::Action

Inherits:
Object
  • Object
show all
Defined in:
lib/cyclop/action.rb

Constant Summary collapse

@@actions =
Set.new

Class Method Summary collapse

Class Method Details

.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

.inherited(klass) ⇒ Object



4
5
6
# File 'lib/cyclop/action.rb', line 4

def self.inherited(klass)
  @@actions << klass
end

.perform(*args) ⇒ Object

Raises:

  • (NotImplementedError)


26
27
28
# File 'lib/cyclop/action.rb', line 26

def self.perform(*args)
  raise NotImplementedError
end

.queuesObject



22
23
24
# File 'lib/cyclop/action.rb', line 22

def self.queues
  []
end

.to_sObject



30
31
32
# File 'lib/cyclop/action.rb', line 30

def self.to_s
  "#{name}: #{queues.inspect}"
end