Rails的cron任务的"delayed_job"真的吗?

nop*_*ole 10 cron ruby-on-rails whenever delayed-job

delayed_job位于http://github.com/collectiveidea/delayed_job

delayed_job能否执行cron任务?比如每天凌晨1点运行一个脚本.或者每1小时运行一次脚本.

如果没有,有什么合适的宝石可以做到这一点?是否可以使用浏览器远程监控,并记录成功和错误?

mar*_*lly 21

我参与了一个试图使用DelayedJob来安排未来项目的项目.它很糟糕.

相反,我建议你使用随时随地的宝石:

http://github.com/javan/whenever

每当Ruby gem为定义cron作业提供清晰的语法时.它输出有效的cron语法,甚至可以为您编写crontab文件.它旨在与Rails应用程序配合使用,并可与Capistrano一起部署.每当独立工作时也是如此.

代码看起来像这样(来自github)

  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
Run Code Online (Sandbox Code Playgroud)

是一个关于如何使用它的RailsCast视频.

和相应的ASCIICast.


Dan*_*vin 4

我认为 cron 是比 Delayed_job 更好的工具。我之前在一个项目中使用过它,它确实非常擅长在后台或在特定时间运行任务。但是,对于定期发生的重复任务,我认为 cron 是最好的工具。

检查无论何时(及其Railscast)以轻松安排可以运行 rake 任务(或 thor、shell 脚本或其他任何内容)的 cron 作业。您可以使用 rake 任务来更新模型,然后拥有某种仪表板控制器看看各种状态。