ruby-on-rails - Rails 自定义延迟作业 - 未初始化的常量

标签 ruby-on-rails ruby ruby-on-rails-3 delayed-job

我已经成功使用 delayed_job 几年了,但最近我需要实现某种成功/失败回调/ Hook 。

按照 github 上的 delayed_job 指南,我设置了以下自定义作业:

class XmlImportJob < Struct.new(:file, :supplier_id, :user_id, :directory)
  def perform
    Product.xml_import(file, supplier_id, user, directory)
  end

  def success(job)
    ProductMailer.xml_import_complete.deliver
  end

  def failure(job)
    ProductMailer.xml_import_failed.deliver
  end
end

例如,当使用 Delayed::Job.enqueue XmlImportJob.new(secure_url, 1, 1, directory) 运行时,我得到一个 Job failed to load: uninitialized constant XmlImportJob。 错误。

我已经尝试保存我的自定义作业,该作业位于 app/jobs 和 lib 下名为 xml_import.rb 的文件中,但我遇到了同样的错误。

目前我只尝试通过 Rails 控制台运行它。即使在显式调用返回 true 的 require 'xml_import' 时,我也会遇到同样的错误。

有成功使用自定义 delayed_jobs 经验的人是否知道我在这里做什么?

最佳答案

回答我自己的问题;

任何你想要自动加载的包含类和模块的自定义目录都必须添加到 config/application.rb 中,如下所示:

config.autoload_paths += %W(
  #{config.root}/app/jobs
)

这些文件夹中包含的文件必须根据 rails 的约定命名,因此 XmlImportJob 驻留在 xml_import_job.rb 中。

关于ruby-on-rails - Rails 自定义延迟作业 - 未初始化的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20396944/

相关文章:

ruby - 无法概念化如何让 LDA-Ruby 读取多个 .txt 文件

ruby-on-rails - 无法访问日志文件。请确保path/to/Production.log存在并且可写

ruby-on-rails - 使用 Rails 编辑时自动填充表单值

ruby-on-rails - 更新后如何检测属性变化

ruby-on-rails - YouTube 的 Google 身份验证在 Rails 中不起作用

ruby-on-rails - 在 Angular 脚本中重用 Rails 部分?

ruby - Ruby 2 中的 Translit 等价物(没有 iconv)

css - Carrierwave 视频 uploader - Rails 4

ruby-on-rails - Ruby on Rails 循环大量记录时出现内存泄漏; find_each 没有帮助

ruby-on-rails - 评估 Controller 中每个 do block 内的迭代器