Module: BoyBand::AsyncInstanceMethods

Defined in:
lib/boy_band.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



437
438
439
440
441
# 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

Instance Method Details

#schedule(method, *args) ⇒ Object



402
403
404
# File 'lib/boy_band.rb', line 402

def schedule(method, *args)
  schedule_for('default', method, *args)
end

#schedule_for(queue, method, *args) ⇒ Object



406
407
408
409
410
411
412
413
414
415
416
# 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) ⇒ Object



418
419
420
# 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) ⇒ Object



422
423
424
425
426
427
428
429
430
431
432
433
434
435
# 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