我已成功使用delayed_job几年了,但最近我需要实现某种成功/失败的回调/挂钩。
在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经验的人知道我在做什么吗?
答案 0 :(得分:6)
回答我自己的问题;
任何包含要自动加载的类和模块的自定义目录都必须添加到config / application.rb中,如下所示:
config.autoload_paths += %W(
#{config.root}/app/jobs
)
这些文件夹中包含的文件必须根据rails的约定命名,因此XmlImportJob位于xml_import_job.rb中。