我可以在rake任务中包含辅助方法

时间:2016-08-25 04:46:40

标签: ruby-on-rails ruby background-process rake-task

我有执行Nokogiri的方法。即下载页面,提取内容,复制到另一个表格......等等。

这个方法是帮助我需要通过rake任务定期运行。

在任务DRY中调用方法的正确方法是什么。

将代码移动到任务文件 转移到模型,普通红宝石 其他一些建议....?

请提供佣金任务的示例,包括帮助

BTW:由于增加了另一个基础设施问题,我不想介绍工作。我现在更喜欢rake任务。在未来,我想转向一些后台工作框架,如Sidekiq或类似的

1 个答案:

答案 0 :(得分:5)

定义rake任务时,可以加载环境。从Using helpers in model: how do I include helper dependencies?我已经了解到,您可以在模型中包含帮助者。将它们包括在任务中也应该有效。

task :my_task => :environment do
  include ActionView::Helpers
  # call a helper
end

从干燥的角度来看,我认为这很好 - 你不会重复自己。

但您也可以在通用的,全局可访问的类/模块中定义代码,而不必在此处使用此include

您可以在config/initializers中的任何文件中定义通用类/模块,它可以在任何地方访问。

如果您将此行添加到lib,也可以使用config/application.rb目录:

config.autoload_paths << Rails.root.join('lib')

如果您已经编写了一个模块,那么您可以在Helpers文件中include

但我说这实际上是一个偏好问题。你基本上都有相同的代码,它只是一个问题,它是如何组织的。