我在rails中创建了一个非常小的应用程序,我在/ lib中创建了一个模块方法来处理逻辑。
我还设置了每当在设定的时间运行该模块方法时。我已经跟踪了readme from Whenever和这些previous posts,希望能够正确设置。
在查看自述文件时虽然引用的例子如下:
every 3.hours do
runner "MyModel.some_process"
rake "my:rake:task"
command "/usr/bin/my_great_command"
end
every 1.day, :at => '4:30 am' do
runner "MyModel.task_to_run_at_four_thirty_in_the_morning"
end
every :hour do # Many shortcuts available: :hour, :day, :month, :year, :reboot
runner "SomeModel.ladeeda"
end
因此,我的问题是什么时候必须引用模型中的方法?或者它可以引用/ lib中的模块方法? Looking at this post似乎暗示必须在模型中使用该方法。
我的问题是我没有数据库,所以没有模型。
任何帮助都将不胜感激。
答案 0 :(得分:0)
它可以引用任何类或任何模块中的方法。 (模块只是一个无法实例化的类)。
如果您需要在模块中的方法之间传递一些中间数据,有时会使模块成为PORO(普通的旧Ruby对象)类,这样可以实例化(即使用new
和initialize
方法)您可以将值存储在该对象的所有实例方法可用的attr_accessor
属性中。
答案 1 :(得分:0)
您不必仅在模型上调用方法。就您当前范围内的类/模块可用/可访问而言,您可以调用它。由于runner
可以访问模型,因此您可能已经设置了随时可以加载rails app的gem。这意味着它也可以访问/lib
文件夹中的任何类/模块。
所以,请继续随时打电话给你:
every 3.hours do
runner "YourModule.some_method"
end
如果您没有使用任何Rails特定功能,我建议不要加载Rails环境。您可以节省大量资源,并且执行速度更快。
或者,创建一个rake
任务来执行处理并调用该任务。作为一个好处,您最终会得到一个可以调用并自行测试的rake任务。
every 3.hours do
rake "cron:my_process"
end