Ruby on rails 使用rails数据作为cronjob执行ruby脚本的最佳实践
我想创建一个ruby脚本,它在一天中的特定时间被触发。此脚本需要使用来自rails应用程序的数据,如会话数据或数据库 如果这是一个问题,脚本需要大约10分钟来执行(在php中是这样)Ruby on rails 使用rails数据作为cronjob执行ruby脚本的最佳实践,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我想创建一个ruby脚本,它在一天中的特定时间被触发。此脚本需要使用来自rails应用程序的数据,如会话数据或数据库 如果这是一个问题,脚本需要大约10分钟来执行(在php中是这样) 实现这一点的最佳/最简单/最干净的方法是什么?创建一个处理一切的模型。例如: class PaymentProcessor def self.daily # whatever needs to be done. end end 使用以下命令从cron运行该代码: RAILS_ENV=product
实现这一点的最佳/最简单/最干净的方法是什么?创建一个处理一切的模型。例如:
class PaymentProcessor
def self.daily
# whatever needs to be done.
end
end
使用以下命令从cron运行该代码:
RAILS_ENV=production script/runner "PaymentProcessor.daily" > tmp/payment.log
此解决方案的好处:您可以完全访问所有Rails方法。该代码与整个应用程序位于相同的代码库(版本控制)中。此外,可以使用与应用程序中其他所有代码相同的方法对代码进行测试。另一方面,克朗是一个广为人知的巨人。您可以使用gems(如Everyone)在Ruby中定义带有漂亮DSL的cron选项卡。看看或。您也可以使用这个看起来干净漂亮的解决方案。无论什么时候我都会用它。什么是DSL?DSL意味着领域特定语言,在本例中,它是一种用漂亮的ruby语法描述cron任务的方法:
每2.5天一次,:at=>'3:15pm'{…}
读起来比15*/2**
更好。谢谢。我是否也可以在模型中使用ApplicationController中的数据?不可以使用上面的代码,也可以使用其他技术。但在我看来,当cron任务需要只有控制器才能提供的东西时,这听起来很奇怪。为什么你认为你需要你的控制器和cron?你能解释一下你想要实现什么吗?