从配置文件中调用模型

时间:2011-11-24 14:04:20

标签: ruby-on-rails ruby ruby-on-rails-3 configuration-files rufus-scheduler

我正在编写一个ruby调度程序 - 即rufus-scheduler,我需要在config文件夹中的initializers部分写入命令,每隔1分钟执行一次任务。我试图从这个模块中访问一个方法。所以我的代码看起来像

scheduler.every("1m") do
  puts("HELLO #{Time.now}")
  ModelName.methodname("WHAT ARE YOU DOING")
end

这在某种程度上不会在模型中执行必要的操作。我也不确定这是否是正确的做事方式 - 例如在配置文件中调用模型。有没有更好的地方将此代码放入模型中?或者在配置文件中调用模型是完美的好习惯。我查看了互联网,看到红宝石中不同类型文件的使用,但找不到合适的材料。任何帮助或指导表示赞赏。

2 个答案:

答案 0 :(得分:2)

如果要从独立任务访问模型,最好的方法是使用rails runner包装器。例如,您将脚本称为:

rails runner call_model.rb

这将在Rails环境中加载,然后执行您的脚本,无需自己执行此操作。模型本身不起作用,因为它们缺乏Rails的上下文。

如果这还不够,您可能需要通过将config/environment.rb包含在rufus-scheduler配置中来更直接地加载Rails环境。

答案 1 :(得分:1)

听起来你真的想要某种真实的预定动作。配置文件用于配置,而不是用于那种实际工作代码。

在rails中运行计划任务的方法。

google“rails daemons”或“rails scheduled tasks”让你开始。

以下是使用cron的计划任务最佳实践的良好列表: A cron job for rails: best practices?