module Resque::Plugins::Approve::ClassMethods

The class methods added to the job class that is being enqueued to determine if it should be shunted to the list of pending jobs, or enqueued.

Public Instance Methods

approve() click to toggle source
# File lib/resque/plugins/approve.rb, line 67
def approve
  Resque::Plugins::Approve.approve(default_queue_name)
end
approve_num(num_approve) click to toggle source
# File lib/resque/plugins/approve.rb, line 75
def approve_num(num_approve)
  Resque::Plugins::Approve.approve_num(num_approve, default_queue_name)
end
approve_one() click to toggle source
# File lib/resque/plugins/approve.rb, line 71
def approve_one
  Resque::Plugins::Approve.approve_one(default_queue_name)
end
auto_delete_approval_key() click to toggle source
# File lib/resque/plugins/approve.rb, line 47
def auto_delete_approval_key
  @auto_delete_approval_key
end
auto_delete_approval_key=(value) click to toggle source
# File lib/resque/plugins/approve.rb, line 43
def auto_delete_approval_key=(value)
  @auto_delete_approval_key = value
end
before_enqueue_approve(*args) click to toggle source

Check if the job needs to be approved, and if so, do not enqueue it.

# File lib/resque/plugins/approve.rb, line 110
def before_enqueue_approve(*args)
  job = PendingJob.new(SecureRandom.uuid, class_name: name, args: args)

  if job.requires_approval?
    return false if job.compressable? && !job.compressed?(args)

    ApprovalKeyList.new.add_job(job)

    false
  else
    job.max_jobs_perform_args(args)

    true
  end
end
before_perform_approve(*args) click to toggle source

It is possible to run a job immediately using `Resque.push`. This will bypass the queue and run the job immediately. This will prevent such a job from enqueuing, and instead pause it for approval

The primary reason for this is to prevent the job from receiving the approval parameters it is not supposed to have when actually run/enqueued.

NOTE: This does not validate running counts.

# File lib/resque/plugins/approve.rb, line 94
def before_perform_approve(*args)
  # Check if the job needs to be approved, and if so, do not enqueue it.
  job = PendingJob.new(SecureRandom.uuid, class_name: name, args: args)

  if job.approval_keys? && !job.max_active_jobs?
    ApprovalKeyList.new.add_job(job)

    raise Resque::Job::DontPerform, "The job has not been approved yet."
  else
    job.max_jobs_perform_args(args)

    true
  end
end
default_queue_name() click to toggle source
# File lib/resque/plugins/approve.rb, line 63
def default_queue_name
  @default_queue_name || Resque.queue_from_class(self)
end
default_queue_name=(value) click to toggle source
# File lib/resque/plugins/approve.rb, line 59
def default_queue_name=(value)
  @default_queue_name = value
end
max_active_jobs() click to toggle source
# File lib/resque/plugins/approve.rb, line 55
def max_active_jobs
  @max_active_jobs
end
max_active_jobs=(value) click to toggle source
# File lib/resque/plugins/approve.rb, line 51
def max_active_jobs=(value)
  @max_active_jobs = value
end
remove() click to toggle source
# File lib/resque/plugins/approve.rb, line 79
def remove
  Resque::Plugins::Approve.remove(default_queue_name)
end
remove_one() click to toggle source
# File lib/resque/plugins/approve.rb, line 83
def remove_one
  Resque::Plugins::Approve.remove_one(default_queue_name)
end