module SuckerPunch::Job::ClassMethods

Public Instance Methods

__run_perform(*args) click to toggle source
# File lib/sucker_punch/job.rb, line 60
def __run_perform(*args)
  SuckerPunch::Counter::Busy.new(self.to_s).increment

  result = self.new.perform(*args)

  SuckerPunch::Counter::Processed.new(self.to_s).increment
  result
rescue => ex
  SuckerPunch::Counter::Failed.new(self.to_s).increment
  SuckerPunch.exception_handler.call(ex, self, [*args])
ensure
  SuckerPunch::Counter::Busy.new(self.to_s).decrement
end
max_jobs(num) click to toggle source
# File lib/sucker_punch/job.rb, line 56
def max_jobs(num)
  self.num_jobs_max = num
end
perform_async(*args) click to toggle source
# File lib/sucker_punch/job.rb, line 35
def perform_async(*args)
  return unless SuckerPunch::RUNNING.true?
  queue = SuckerPunch::Queue.find_or_create(self.to_s, num_workers, num_jobs_max)
  queue.post { __run_perform(*args) }
end
perform_in(interval, *args) click to toggle source
# File lib/sucker_punch/job.rb, line 42
def perform_in(interval, *args)
  return unless SuckerPunch::RUNNING.true?
  queue = SuckerPunch::Queue.find_or_create(self.to_s, num_workers, num_jobs_max)
  job = Concurrent::ScheduledTask.execute(interval.to_f, args: args, executor: queue) do
    __run_perform(*args)
  end
  job.pending?
end
workers(num) click to toggle source
# File lib/sucker_punch/job.rb, line 52
def workers(num)
  self.num_workers = num
end