class Clockwork::ManagerWithDatabaseTasks
Public Class Methods
new()
click to toggle source
Calls superclass method
Clockwork::Manager.new
# File lib/clockwork/manager_with_database_tasks.rb, line 110 def initialize super @database_event_sync_performers = [] end
Public Instance Methods
sync_database_tasks(options={}, &block)
click to toggle source
# File lib/clockwork/manager_with_database_tasks.rb, line 115 def sync_database_tasks(options={}, &block) [:model, :every].each do |option| raise ArgumentError.new("requires :#{option} option") unless options.include?(option) end raise ArgumentError.new(":every must be greater or equal to 1.minute") if options[:every] < 1.minute sync_performer = DatabaseEventSyncPerformer.new(self, options[:model], block) @database_event_sync_performers << sync_performer # create event that syncs clockwork events with database events every options[:every], "sync_database_tasks_for_model_#{options[:model]}" do sync_performer.sync end end
Private Instance Methods
events_from_database_as_array()
click to toggle source
# File lib/clockwork/manager_with_database_tasks.rb, line 132 def events_from_database_as_array @database_event_sync_performers.collect{|performer| performer.clockwork_events}.flatten end
events_to_run(t)
click to toggle source
# File lib/clockwork/manager_with_database_tasks.rb, line 136 def events_to_run(t) (@events + events_from_database_as_array).select{|event| event.run_now?(t) } end
register(period, job, block, options)
click to toggle source
# File lib/clockwork/manager_with_database_tasks.rb, line 140 def register(period, job, block, options) Event.new(self, period, job, block || handler, options).tap do |e| if options[:from_database] options[:performer].add_event(e, options[:db_task_id]) else @events << e end end end