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.rb
、config/initializers/delayed_jobs.rb
、config/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]
来源:
- delayed_job fails jobs when running as a daemon. Runs fine when using rake jobs:work
- DelayedJob: "Job failed to load: uninitialized constant Syck::Syck"
- Rails Custom Delayed Job - uninitialized constant
- model classes not loading in Delayed Job when using threadsafe
您是否也可以尝试将此行添加到 config/application.rb 文件中
config.eager_load_paths+=Dir[Rails.root.join('app','jobs')]
我总觉得答案很明显...在我弄明白之后。
问题是我使用的是共享数据库,并且现有工作人员正在访问该数据库。虽然我正在重新启动并刷新服务器的本地实例,但其他实例正在尝试 运行 我的工作,而其他工作人员导致了错误,而不是我的本地实例。
解决方案:确保 delayed_job 的其他实例使用与您 testing/building/using 相同的代码 table。如果是这样,请尽可能使用另一个数据库。
我已经为此花费了几天时间和大约 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.rb
、config/initializers/delayed_jobs.rb
、config/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]
来源:
- delayed_job fails jobs when running as a daemon. Runs fine when using rake jobs:work
- DelayedJob: "Job failed to load: uninitialized constant Syck::Syck"
- Rails Custom Delayed Job - uninitialized constant
- model classes not loading in Delayed Job when using threadsafe
您是否也可以尝试将此行添加到 config/application.rb 文件中
config.eager_load_paths+=Dir[Rails.root.join('app','jobs')]
我总觉得答案很明显...在我弄明白之后。
问题是我使用的是共享数据库,并且现有工作人员正在访问该数据库。虽然我正在重新启动并刷新服务器的本地实例,但其他实例正在尝试 运行 我的工作,而其他工作人员导致了错误,而不是我的本地实例。
解决方案:确保 delayed_job 的其他实例使用与您 testing/building/using 相同的代码 table。如果是这样,请尽可能使用另一个数据库。