module BoyBand::AsyncInstanceMethods

Public Class Methods

included(base) click to toggle source
# File lib/boy_band.rb, line 437
def self.included(base)
  base.define_singleton_method(:included) do |klass|
    klass.cattr_accessor :last_scheduled_stamp
  end
end

Public Instance Methods

schedule(method, *args) click to toggle source
# File lib/boy_band.rb, line 402
def schedule(method, *args)
  schedule_for('default', method, *args)
end
schedule_for(queue, method, *args) click to toggle source
# File lib/boy_band.rb, line 406
def schedule_for(queue, method, *args)
  return nil unless method
  id = self.id
  settings = {
    'id' => id,
    'method' => method,
    'scheduled' => self.class.scheduled_stamp,
    'arguments' => args
  }
  Worker.schedule_for(queue, self.class, :perform_action, settings)
end
schedule_once(method, *args) click to toggle source
# File lib/boy_band.rb, line 418
def schedule_once(method, *args)
  schedule_once_for('default', method, *args)
end
schedule_once_for(queue, method, *args) click to toggle source
# File lib/boy_band.rb, line 422
def schedule_once_for(queue, method, *args)
  return nil unless method && id
  already_scheduled = Worker.scheduled_for?(queue, self.class, :perform_action, {
    'id' => id,
    'method' => method,
    'scheduled' => self.class.scheduled_stamp,
    'arguments' => args
  })
  if !already_scheduled
    schedule_for(queue, method, *args)
  else
    false
  end
end