我对轨道调度和类/模块包含有一些问题。
我在lib /中有一个类,我想在config / schedule.rb中实例化...我是否需要/包含该类?我该怎么做?
另外,我想使用同样在lib中的模块中的方法。我可以通过ModuleName.methodName(arguments)访问它吗?或者我是否需要包含要加载/需要它的东西?
目前我在schedule.rb中有类似的内容:
every 32.minutes do
instance=ClassA.new()
runner "ModuleName.methodName(#{instance})"
end
我没有任何错误消息,但我不认为发生/正在调用任何内容。
答案 0 :(得分:0)
所有这些都提供了一种在crontab(http://en.wikipedia.org/wiki/Cron)中生成条目的好方法。因此,您可以在日程表中使用ruby以您喜欢的任何方式创建这些条目,但是当cron调用任务时,需要发生任何需要发生的事情,例如初始化新类,或在应用程序中加载某些配置等等。 ,而不是在生成crontab时。
例如,如果您想对模型进行操作,我会在您的应用程序(在lib / tasks中)创建一个rake任务,如下所示:
namespace :whatever do
task name_this_better: :environment do
instance = ClassA.new()
ModuleName.methodName(instance)
end
end
然后,在你的日程表中,你可以这样做:
every 32.minutes do
rake "whatever:name_this_better"
end
这不仅使您的代码更清晰,更有条理,而且使事情更具可重用性。
答案 1 :(得分:0)
您也可以使用https://github.com/tomykaira/clockwork。它创建了简单的ruby过程(不使用Cron,如whenever
所做)并且有很多选项可供使用。