【发布时间】:2011-03-29 23:22:33
【问题描述】:
我必须定期执行一项相当密集的数据库任务。我将rails用于与此任务相关的应用程序,因此为了方法的简单性和独特性,我想知道如何最好地使用rails实现cron作业。我知道 rake 是一种解决方案,但我完全不知道如何使用它。
谢谢。
【问题讨论】:
标签: ruby-on-rails ruby cron rake
我必须定期执行一项相当密集的数据库任务。我将rails用于与此任务相关的应用程序,因此为了方法的简单性和独特性,我想知道如何最好地使用rails实现cron作业。我知道 rake 是一种解决方案,但我完全不知道如何使用它。
谢谢。
【问题讨论】:
标签: ruby-on-rails ruby cron rake
javan-whenever 是另一个值得关注的好东西。
【讨论】:
rubber,一个用于云部署的 Capistrano 插件,提供了一组帮助脚本来管理 cron 作业。但是,这些脚本将完全独立于橡胶工作。
如果您从http://github.com/wr0ngway/rubber/tree/master/lib/generators/vulcanize/templates/base/script/ 获取“cron-rake”、“cron-runner”和“cron-sh”脚本,并将它们放在 Rails 项目的 script/ 目录中,那么您应该可以开始了。不要忘记使它们可执行。
大部分实际工作都是在“cron-sh”中完成的。 “cron-rake”是运行 rake 任务的便捷包装器。 “cron-runner”是运行任意 Ruby 的便捷包装器(很像 script/runner 提供的)。
【讨论】:
只需实现您的脚本以执行您需要的任何操作,然后从 cron 作业中使用 script/runner 调用它。
0 * * * * cd /path/to_your/app && RAILS_ENV=production script/runner scripts/my_maintenance_script.rb
这将在您的生产环境中每小时启动一次my_maintenance_script.rb。相当裸机,但它可以完成工作。
【讨论】:
delayed_job 很好,它将作业的详细信息存储在数据库中。
【讨论】: