ruby Rails 4 Delayed_job错误-无法加载作业:未定义类/模块CustomJob

vom3gejh  于 2023-10-17  发布在  Ruby
关注(0)|答案(2)|浏览(137)

我花了几天时间在这上面,大约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')时,我得到了主题中提到的错误。作业已创建并添加到数据库,但错误消息为“作业失败...”
我有这样的台词:

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_jobconfig/application.rb文件
还有这个

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

我也在每次更改后重新启动服务器。并使用以下命令验证delayed_job是否正在运行:

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

来源:

xurqigkl

xurqigkl1#

我总是觉得答案很明显...在我弄清楚之后。
问题是,我使用的是一个共享数据库,并且有现有的工人访问这个数据库。虽然我正在重新启动并刷新服务器的本地示例,但其他示例正在尝试运行我的作业,而导致错误的是OTHER worker,而不是我的本地示例。
解决方案:确保delayed_job的其他示例使用与您正在测试/构建/使用的代码相同的表。如果是这样,如果可能的话,使用另一个DB。

bqujaahr

bqujaahr2#

你可以尝试把这一行添加到config/application.rb文件中吗

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

相关问题