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

Fra*_*aña 3 ruby ruby-on-rails background-process rake-task

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

这个方法是内部帮助器,我需要通过rake任务定期运行.

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

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

请提供rake任务的示例,包括帮助程序

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

max*_*ner 5

定义rake任务时,可以加载环境.从模型中使用帮助程序:如何包含帮助程序依赖项?我了解到你可以在模型中加入助手.将它们包含在任务中也应该有效.

task :my_task => :environment do
  include ActionView::Helpers
  # call a helper
end
Run Code Online (Sandbox Code Playgroud)

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

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

您可以在任何文件中定义通用类/模块,config/initializers并且可以在任何位置访问它.

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

config.autoload_paths << Rails.root.join('lib')
Run Code Online (Sandbox Code Playgroud)

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

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