Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用rails数据作为cronjob执行ruby脚本的最佳实践_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 使用rails数据作为cronjob执行ruby脚本的最佳实践

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

我想创建一个ruby脚本,它在一天中的特定时间被触发。此脚本需要使用来自rails应用程序的数据,如会话数据或数据库

如果这是一个问题,脚本需要大约10分钟来执行(在php中是这样)


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

创建一个处理一切的模型。例如:

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?你能解释一下你想要实现什么吗?