有没有办法使用rake任务“监视”新的数据库表插入?

时间:2011-03-31 08:08:46

标签: database ruby-on-rails-3 rake

我有rufus调度程序,我打算在新日程表中查看我的日程表。有没有办法做到这一点?类似的东西:

schedule.every "1m" do
  #check for new entries in database
end

ANSWERED

scheduler.every '1m' do
  #check for new stuff in the database
  newest_jobs = Schedule.all_cron_jobs.select{ |x| x.created_at > 1.minute.ago } - all_schedules_with_cron
  unless newest_jobs.empty?
    newest_jobs.each do |new_job|
      scheduler.every new_job.cron_string do
        job.call
      end
    end
  end
end

jobs.call是对延迟作业的调用以对该计划进行排队。所以基本上,获取最新的时间表,并在每次cron匹配时调用rufus将作业放入队列

1 个答案:

答案 0 :(得分:0)

使用表格上的created_at列检查自上次检查后的新条目。

last_checked = 1.minute.ago
schedule.every "1m" do
  new_entries = Schedule.where(['created_at >= ?', last_checked])
  last_checked = Time.now

  # deal with entries here.
end

您可以通过最小化last_checked个周期之间的差距来改善这一点。

你是不是更好地在模型上使用观察者而不是这个?保证不会因时间问题而错过。