Class: Cyclop::Action
- Inherits:
-
Object
- Object
- Cyclop::Action
- Defined in:
- lib/cyclop/action.rb
Constant Summary collapse
- @@actions =
Set.new
Class Method Summary collapse
- .find_by_queue(queue) ⇒ Object
- .inherited(klass) ⇒ Object
- .perform(*args) ⇒ Object
- .queues ⇒ Object
- .to_s ⇒ Object
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
26 27 28 |
# File 'lib/cyclop/action.rb', line 26 def self.perform(*args) raise NotImplementedError end |
.queues ⇒ Object
22 23 24 |
# File 'lib/cyclop/action.rb', line 22 def self.queues [] end |
.to_s ⇒ Object
30 31 32 |
# File 'lib/cyclop/action.rb', line 30 def self.to_s "#{name}: #{queues.inspect}" end |