我有执行Nokogiri的方法。即下载页面,提取内容,复制到另一个表格......等等。
这个方法是帮助我需要通过rake任务定期运行。
在任务DRY中调用方法的正确方法是什么。
将代码移动到任务文件 转移到模型,普通红宝石 其他一些建议....?
请提供佣金任务的示例,包括帮助
BTW:由于增加了另一个基础设施问题,我不想介绍工作。我现在更喜欢rake任务。在未来,我想转向一些后台工作框架,如Sidekiq或类似的答案 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
。
但我说这实际上是一个偏好问题。你基本上都有相同的代码,它只是一个问题,它是如何组织的。