【问题标题】:Rails 3.2 - Rake Background Task Create DB RecordsRails 3.2 - Rake 后台任务创建数据库记录
【发布时间】:2012-04-13 18:00:45
【问题描述】:

我想创建一个每 7 天(周日午夜)自动运行的 rake 任务,它将分析一周的数据(每周最多 20,000 条记录)。

一个 Outlet has_many :monitorings A 监控 belongs_to :outlet

我想检查在一周结束时,一家分店是否至少创建了 4 条记录。如果没有,我希望在数据库内部的一个名为 unmonitored 的表中创建一条记录。

记录应包含其被监控的次数以及一周的开始和结束日期。

【问题讨论】:

    标签: ruby-on-rails ruby background rake


    【解决方案1】:

    要定期运行 rake 任务,您可以使用裸 cron 作业或漂亮的 ruby​​ 包装器,Whenever

    看看:

    every 3.hours do
      runner "MyModel.some_process"       
      rake "my:rake:task"                 
      command "/usr/bin/my_great_command"
    end
    
    every 1.day, :at => '4:30 am' do 
      runner "MyModel.task_to_run_at_four_thirty_in_the_morning"
    end
    
    every :hour do # Many shortcuts available: :hour, :day, :month, :year, :reboot
      runner "SomeModel.ladeeda"
    end
    
    every :sunday, :at => '12pm' do # Use any day of the week or :weekend, :weekday 
      runner "Task.do_something_great"
    end
    
    every '0 0 27-31 * *' do
      command "echo 'you can use raw cron syntax too'"
    end
    

    【讨论】:

    • 如何让 rake 任务中的片段过期?
    • 在控制器中我会调用 expire_fragment("[fragment_name]"),我怎么能在 rake 任务中做同样的事情?
    • 基本上一样。看这里:stevencummings.name/2010/09/07/…
    猜你喜欢
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 2013-09-03
    • 1970-01-01
    • 2021-04-07
    相关资源
    最近更新 更多