使用rails-data作为cronjob执行ruby-script的最佳实践

时间:2014-05-03 10:59:08

标签: ruby-on-rails ruby ruby-on-rails-4

我想创建一个ruby脚本,它在一天中的某些时间触发。此脚本需要使用rails-app中的数据,如会话数据或数据库。

如果这是一个问题,那么脚本需要10分钟才能执行(在php中,它是)。

实现这一目标的最佳/最简单/最干净的方法是什么?

1 个答案:

答案 0 :(得分:2)

创建一个处理所有内容的模型。例如:

class PaymentProcessor
  def self.daily
    # whatever needs to be done.
  end
end

使用以下命令从cron运行该代码:

RAILS_ENV=production script/runner "PaymentProcessor.daily" > tmp/payment.log

此解决方案的好处:您可以完全访问所有Rails方法。代码与整个应用程序的代码库(版本控制)相同。此外,代码可以使用与应用程序中的每个其他代码相同的方式进行测试。另一方面,cron是一个众所周知的巨人。您可以使用像Whenever这样的宝石来定义带有Ruby的漂亮DSL的cron选项卡。