如何在 Rails 项目中运行日常任务/脚本?
Posted
技术标签:
【中文标题】如何在 Rails 项目中运行日常任务/脚本?【英文标题】:How to run daily tasks/scripts in a Rails project? 【发布时间】:2012-05-15 13:26:57 【问题描述】:我正在为我的应用程序开发计费系统,但我不确定如何设置每天运行的脚本,一个用于发送付款提醒(电子邮件),另一个用于降级尚未完成的订阅已更新。
有关如何执行此操作的任何提示? 我需要注意什么问题? 我可以使用任何宝石吗?我已经完成了大部分的采购工作,所以我不再寻找像 paypal_recurring 或 stripe 这样的宝石 - 只需要处理付款提醒和处理已过期的帐户。
【问题讨论】:
A cron job for rails: best practices?的可能重复 【参考方案1】:每当https://github.com/javan/whenever 是使用 cron 定义计划任务的好方法。或者你可以直接使用cron:http://www.ameravant.com/posts/recurring-tasks-in-ruby-on-rails-using-runner-and-cron-jobs
【讨论】:
ameravant 的链接重定向到他们的主页,但我发现launchschool.com/blog/cron-jobs-and-rails 有一个很好的演练。【参考方案2】:我已经通过多种方式做到了这一点,并且有很多方法可以做到这一点。我认为当前的最佳做法是使用Resque 将作业排队并使用Rescue Scheduler 安排它们。
Resque 是一款可靠的“作业调度”应用,可以为您处理各种任务。可以为 Resque Scheduler 提供完整的 cron 表达式(除了其他调度任务的方法)来管理作业。
这种方法的一个优点是您可以获得Resque Web 应用程序,该应用程序为您提供了一个用于监控作业(或启动它们以进行一次性作业运行)的网络应用程序。
我已经在 Heroku 中使用过这种方法,它运行良好且可靠。
【讨论】:
以上是关于如何在 Rails 项目中运行日常任务/脚本?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 kubernetes cron 作业中启动 rails rake 任务
如何通过 Procfile 在 Heroku 上禁用 Rails web dyno?
使用 Rails 为 capistrano 3.8.0 运行“cap production deploy”时不知道如何构建任务“start”