Class: Dalliance::Workers::Resque
- Inherits:
-
ActiveJob::Base
- Object
- ActiveJob::Base
- Dalliance::Workers::Resque
- Defined in:
- lib/dalliance/workers/resque.rb,
lib/dalliance/workers/resque.rb
Class Method Summary collapse
- .dequeue(instance) ⇒ Object
- .enqueue(instance, queue = 'dalliance', perform_method) ⇒ Object
- .perform(instance_klass, instance_id, perform_method) ⇒ Object
- .queued?(instance, queue_name) ⇒ Boolean
-
.rescue_error? ⇒ Boolean
Resque fails, so don’t rescue the error.
Instance Method Summary collapse
Class Method Details
.dequeue(instance) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/dalliance/workers/resque.rb', line 13 def self.dequeue(instance) redis = ::Resque.redis queue = instance.processing_queue redis.everything_in_queue(queue).each do |string| # Structure looks like, e.g. # { 'class' => 'ActiveJob::...', 'args' => [{ 'arguments' => ['SomeClass', 123, 'dalliance_process'] }] } data = ::Resque.decode(string) dalliance_args = data['args'][0]['arguments'] if dalliance_args == [instance.class.name, instance.id, 'dalliance_process'] || dalliance_args == [instance.class.name, instance.id, 'dalliance_reprocess'] redis.remove_from_queue(queue, string) end end end |
.enqueue(instance, queue = 'dalliance', perform_method) ⇒ Object
7 8 9 10 11 |
# File 'lib/dalliance/workers/resque.rb', line 7 def self.enqueue(instance, queue = 'dalliance', perform_method) Dalliance::Workers::Resque .set(queue: queue) .perform_later(instance.class.name, instance.id, perform_method.to_s) end |
.perform(instance_klass, instance_id, perform_method) ⇒ Object
101 102 103 104 105 106 |
# File 'lib/dalliance/workers/resque.rb', line 101 def self.perform(instance_klass, instance_id, perform_method) instance_klass .constantize .find(instance_id) .send(perform_method, true) end |
.queued?(instance, queue_name) ⇒ Boolean
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/dalliance/workers/resque.rb', line 30 def self.queued?(instance, queue_name) # All current jobs in the queue queued_jobs = ::Resque.redis.everything_in_queue(queue_name) .map(&::Resque.method(:decode)) queued_jobs.any? do |job_info_hash| args = job_info_hash['args'] next unless args.is_a?(Array) arg = args[0] next unless arg.is_a?(Hash) arg.fetch('arguments', []).first(2) == [instance.class.name, instance.id] end end |
.rescue_error? ⇒ Boolean
Resque fails, so don’t rescue the error
56 57 58 |
# File 'lib/dalliance/workers/resque.rb', line 56 def self.rescue_error? false end |
Instance Method Details
#perform(instance_klass, instance_id, perform_method) ⇒ Object
48 49 50 51 52 53 |
# File 'lib/dalliance/workers/resque.rb', line 48 def perform(instance_klass, instance_id, perform_method) instance_klass .constantize .find(instance_id) .send(perform_method, true) end |