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

 117061771_af0556 发布于 2023-02-12 17:51

我已成功使用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.错误.

我已经尝试保存我的自定义作业,该作业位于xml_import.rbapp/jobs和lib下的一个文件中,我得到了同样的错误.

目前我只尝试通过rails控制台运行它.即使显式调用require 'xml_import'哪个返回true,我也会得到相同的错误.

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

1 个回答
  • 回答我自己的问题;

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

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

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

    2023-02-12 17:53 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有