module BoyBand::AsyncClassMethods
Public Instance Methods
perform_action(settings)
click to toggle source
# File lib/boy_band.rb, line 487 def perform_action(settings) obj = self if settings['id'] obj = Worker.find_record(obj, settings['id'].to_s) end if !obj # record not found so there's nothing to do on it # TODO: probably log this somewhere so we don't lose it.. Rails.logger.warn "expected record not found: #{self.to_s}:#{settings['id']}" elsif obj.respond_to?(settings['method']) obj.send(settings['method'], *settings['arguments']) else id = settings['id'] ? "#{settings['id']}:" : "" raise "method not found: #{self.to_s}:#{id}#{settings['method']}" end end
schedule(method, *args)
click to toggle source
# File lib/boy_band.rb, line 449 def schedule(method, *args) return nil unless method settings = { 'method' => method, 'scheduled' => self.scheduled_stamp, 'arguments' => args } schedule_for('default', method, *args) end
schedule_for(queue, method, *args)
click to toggle source
# File lib/boy_band.rb, line 459 def schedule_for(queue, method, *args) return nil unless method settings = { 'method' => method, 'scheduled' => self.scheduled_stamp, 'arguments' => args } Worker.schedule_for(queue, self, :perform_action, settings) end
schedule_once(method, *args)
click to toggle source
# File lib/boy_band.rb, line 469 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 473 def schedule_once_for(queue, method, *args) return nil unless method already_scheduled = Worker.scheduled_for?(queue, self, :perform_action, { 'method' => method, 'scheduled' => self.scheduled_stamp, 'arguments' => args }) if !already_scheduled schedule_for(queue, method, *args) else false end end
scheduled_stamp()
click to toggle source
# File lib/boy_band.rb, line 445 def scheduled_stamp Time.now.to_i end