ruby-on-rails - 我可以在 rake 任务中包含辅助方法吗

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

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

这个方法在 helper 内部,我需要通过 rake 任务定期运行。

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

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

请提供包含 helper 的 rake 任务示例

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

最佳答案

当您定义一个 rake 任务时,您可以加载您的环境。来自 Using helpers in model: how do I include helper dependencies?我了解到您可以在模型中包含助手。将它们包括在任务中也应该有效。

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

从 DRY 的角度来看,我认为这很好 - 你没有重复自己。

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

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

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

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

如果您已经编写了一个模块,则可以将其包含到您的Helpers 文件中。

但我想说这真的是一个偏好问题。无论哪种方式,您基本上都有相同的代码,这只是代码组织方式的问题。

关于ruby-on-rails - 我可以在 rake 任务中包含辅助方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39136847/

相关文章:

ruby-on-rails - 强参数允许数组数组

multithreading - 带有 goroutines 的 Golang 守护进程不会停止执行

ios - 在 iOS 7 后台模式下有效跟踪用户的问题

c# - HostingEnvironment.QueueBackgroundWorkItem - 澄清?

ruby-on-rails - 如何使用发条每小时输入数据?

ruby-on-rails - 验证错误播种 Rails 3 w Seeds.rb

ruby-on-rails - 每个数组对象的 RoR 范围

ruby - 在 Rails 之外使用 sprockets ——指令不起作用

ruby - 动态获取变量值

ruby-on-rails - rails : Create a drop table cascade migration