Class: DelayedCron::Jobs::Sidekiq

Inherits:
Object
  • Object
show all
Includes:
Sidekiq::Worker
Defined in:
lib/delayed_cron/jobs/sidekiq.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.at_match?(arg_options, options) ⇒ Boolean

Returns:

  • (Boolean)


46
47
48
49
# File 'lib/delayed_cron/jobs/sidekiq.rb', line 46

def self.at_match?(arg_options, options)
  return true unless !!arg_options["at"] && !!options[:at]
  arg_options["at"] == options[:at]
end

.class_and_method_match?(args, klass, method_name) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/delayed_cron/jobs/sidekiq.rb', line 51

def self.class_and_method_match?(args, klass, method_name)
  args[0] == klass && args[1] == method_name.to_s
end

.do_not_enqueue?(klass, method_name, options) ⇒ Boolean

Returns:

  • (Boolean)


17
18
19
20
21
# File 'lib/delayed_cron/jobs/sidekiq.rb', line 17

def self.do_not_enqueue?(klass, method_name, options)
  scheduled?(klass, method_name, options) ||
  enqueued?(klass, method_name, options)  ||
  retrying?(klass, method_name, options)
end

.enqueue_delayed_cron(klass, method_name, options) ⇒ Object



10
11
12
13
14
15
# File 'lib/delayed_cron/jobs/sidekiq.rb', line 10

def self.enqueue_delayed_cron(klass, method_name, options)
  options.symbolize_keys!
  unless do_not_enqueue?(klass, method_name, options)
    perform_in(options[:interval].to_i, klass, method_name, options)
  end
end

.enqueued?(klass, method_name, options) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
38
39
# File 'lib/delayed_cron/jobs/sidekiq.rb', line 35

def self.enqueued?(klass, method_name, options)
  ::Sidekiq::Queue.new("cron_job").collect(&:item).select do |item|
    matches?(item, klass, method_name, options)
  end.present?
end

.matches?(item, klass, method_name, options) ⇒ Boolean

Returns:

  • (Boolean)


41
42
43
44
# File 'lib/delayed_cron/jobs/sidekiq.rb', line 41

def self.matches?(item, klass, method_name, options)
  class_and_method_match?(item["args"], klass, method_name) &&
  at_match?(item["args"][2], options)
end

.retrying?(klass, method_name, options) ⇒ Boolean

Returns:

  • (Boolean)


23
24
25
26
27
# File 'lib/delayed_cron/jobs/sidekiq.rb', line 23

def self.retrying?(klass, method_name, options)
  ::Sidekiq::RetrySet.new.collect(&:item).select do |item|
    matches?(item, klass, method_name, options)
  end.present?
end

.scheduled?(klass, method_name, options) ⇒ Boolean

Returns:

  • (Boolean)


29
30
31
32
33
# File 'lib/delayed_cron/jobs/sidekiq.rb', line 29

def self.scheduled?(klass, method_name, options)
  ::Sidekiq::ScheduledSet.new.collect(&:item).select do |item|
    matches?(item, klass, method_name, options)
  end.present?
end

Instance Method Details

#perform(klass, method_name, options) ⇒ Object



55
56
57
# File 'lib/delayed_cron/jobs/sidekiq.rb', line 55

def perform(klass, method_name, options)
  DelayedCron.process_job(klass, method_name, options)
end