我正在编写一个ruby调度器-即rufus-scheduler,并且我需要在配置文件夹内的初始化器部分中编写命令,以便每1分钟左右执行一次任务。我试图从这个模块访问一个方法。所以我的代码看起来像
scheduler.every("1m") do
puts("HELLO #{Time.now}")
ModelName.methodname("WHAT ARE YOU DOING")
end
这在某种程度上没有在模型中执行必要的操作。此外,我不确定这是否是正确的做事方式-例如在配置文件中调用模型。在模型中有更好的地方放置这些代码吗?或者在配置文件中调用模型是一个很好的实践。我在网上查看了ruby中不同类型文件的用法,但找不到合适的材料。任何帮助或指导感谢。
如果您想从独立任务访问模型,最好的方法是使用rails runner
包装器。例如,您可以这样调用脚本:
rails runner call_model.rb
这将在Rails环境中加载,然后执行脚本,从而消除了自己执行脚本的需要。模型本身是不能工作的,因为它们缺乏Rails的上下文。
如果这还不够,您可能需要通过在您的rufus-scheduler配置中包含config/environment.rb
来更直接地加载Rails环境。
听起来您实际上需要某种真正的计划操作。配置文件是用于配置的,而不是用于那种实际的工作代码。
有吨方法在rails中运行计划任务。
搜索"rails daemons"或"rails计划任务"来开始。
下面是使用cron的计划任务最佳实践列表:rails的cron作业:最佳实践?