Rails 4 Delayed_job 错误 - 作业加载失败:未定义 class/module CustomJob

Rails 4 Delayed_job error - Job failed to load: undefined class/module CustomJob

我已经为此花费了几天时间和大约 100 个小时,但无法修复。

这是我的设置(使用 Rails 4.2.8)

class CustomJob < ActiveJob::Base
  def perform(*args)
    filename = args.first
    data = File.read(filename)
    #  process that data
  end
end

当我运行 Delayed::Job.enqueue CustomJob.new('filename')时,我得到了主题中提到的错误。作业已创建并添加到数据库,但错误消息为 "Job failed..."

我有这条线:

require 'custom_job'

在几个地方,包括 script/delayed_job.rbconfig/initializers/delayed_jobs.rbconfig/initializers/custom_job.rb 和我调用作业的文件。

我还添加了这个: config.autoload_paths+=Dir[Rails.root.join('app','jobs')] config.active_job.queue_adapter = :delayed_job 到我的 config/application.rb 文件

还有这个:

config.threadsafe! unless defined? ($rails_rake_task) && $rails_rake_task

每次更改后我也重新启动了我的服务器。并验证 delayed_job 是 运行ning 使用:

dir$ RAILS_ENV=development script/delayed_job status
delayed_job: running [pid 64503]

来源:

您是否也可以尝试将此行添加到 config/application.rb 文件中

config.eager_load_paths+=Dir[Rails.root.join('app','jobs')]

我总觉得答案很明显...在我弄明白之后。

问题是我使用的是共享数据库,并且现有工作人员正在访问该数据库。虽然我正在重新启动并刷新服务器的本地实例,但其他实例正在尝试 运行 我的工作,而其他工作人员导致了错误,而不是我的本地实例。

解决方案:确保 delayed_job 的其他实例使用与您 testing/building/using 相同的代码 table。如果是这样,请尽可能使用另一个数据库。