0

我正在编写一个 ruby​​ 调度程序 - 即 rufus-scheduler,并且我需要在配置文件夹内的初始化程序部分中编写一些命令,以便每 1 分钟左右执行一次任务。我正在尝试从其中的模块访问方法。所以我的代码看起来像

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

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

4

2 回答 2

2

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

rails runner call_model.rb

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

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

于 2011-11-24T16:04:54.037 回答
1

听起来您实际上想要某种真正的预定动作。config 文件用于配置,而不是用于该类型的实际工作代码。

有很多方法可以在 Rails 中运行计划任务。

谷歌“rails 守护进程”或“rails 计划任务”让你开始。

这是使用 cron 的计划任务最佳实践的一个很好的列表: Rails 的 cron 作业:最佳实践?

于 2011-11-24T14:16:16.323 回答