从lib / schedule.rb中加载/需要的Rails [每当]

时间:2015-04-20 00:31:36

标签: ruby-on-rails ruby oop object whenever

我对轨道调度和类/模块包含有一些问题。

我在lib /中有一个类,我想在config / schedule.rb中实例化...我是否需要/包含该类?我该怎么做?

另外,我想使用同样在lib中的模块中的方法。我可以通过ModuleName.methodName(arguments)访问它吗?或者我是否需要包含要加载/需要它的东西?

目前我在schedule.rb中有类似的内容:

every 32.minutes do
  instance=ClassA.new()
  runner "ModuleName.methodName(#{instance})"
end

我没有任何错误消息,但我不认为发生/正在调用任何内容。

2 个答案:

答案 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所做)并且有很多选项可供使用。