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