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