class ActiveScheduler::ResqueWrapper

Public Class Methods

perform(job_data) click to toggle source
# File lib/active_scheduler/resque_wrapper.rb, line 4
def self.perform(job_data)
  klass = Object.const_get job_data['job_class']
  named_args = job_data.delete('named_args') || false

  if job_data.has_key? 'arguments'
    if named_args
      args = job_data['arguments'].first.symbolize_keys
    else
      args = job_data['arguments']
    end

    named_args ? klass.perform_later(**args) : klass.perform_later(*args)
  else
    klass.perform_later
  end
end
scheduled(_queue, _wrapper_klass, *args) click to toggle source
# File lib/active_scheduler/resque_wrapper.rb, line 21
def self.scheduled(_queue, _wrapper_klass, *args)
  perform(*args)
end
wrap(schedule) click to toggle source
# File lib/active_scheduler/resque_wrapper.rb, line 25
def self.wrap(schedule)
  schedule = HashWithIndifferentAccess.new(schedule)

  schedule.each do |job, opts|
    class_name = opts[:class] || job
    next if class_name =~ /#{self.to_s}/

    klass = class_name.constantize
    next unless klass <= ActiveJob::Base

    queue = opts[:queue] || klass.queue_name
    args = opts[:args]
    named_args = opts[:named_args] || false

    if !args && opts.has_key?(:arguments)
      warn 'active_scheduler: [DEPRECATION] using the `arguments` key in ' \
        'your resque schedule will soon be deprecated. Please revert to ' \
        'the resque standard `args` key.'
      args = opts[:arguments]
    end

    schedule[job] = {
      class:        self.to_s,
      queue:        queue,
      args: [{
               job_class:  class_name,
               queue_name: queue,
               arguments:  args,
             }]
    }

    schedule[job][:args].first.merge!({ named_args: named_args }) if named_args

    schedule[job][:description] = opts.fetch(:description, nil) if opts.fetch(:description, nil)
    schedule[job][:every]       = opts.fetch(:every, nil)       if opts.fetch(:every, nil)
    schedule[job][:cron]        = opts.fetch(:cron, nil)        if opts.fetch(:cron, nil)
    schedule[job][:rails_env]   = opts.fetch(:rails_env, nil)   if opts.fetch(:rails_env, nil)
    schedule[job][:persist]     = true                          if opts.fetch(:persist, nil)
  end
end