我正在努力使用Delayed_job(Rails 2.3.8应用程序中的集体构思v2.0)。
我正在从application_controller方法调用该作业:
...
Delayed::Job.enqueue(S3MoverJob.new(docs))
docs是带有id和文件名的哈希。
在我的Lib目录中,我有类S3MoverJob:
class S3MoverJob < Struct.new(:docs)
def perform
#setup connection to Amazon
...
#connect
...
#loop to move files not transfered already
docs.each do |id,file_name|
# Move file
begin
doc = Document.find(id)
... perform actions
rescue Exception => exc
raise "failed!"
end
end
end
end
问题在于它正在提升: S3MoverJob因NoMethodError失败:当你没想到它时你有一个nil对象!
我查看了数据库中的处理程序,它正在向执行方法传递带有id和文件名列表的Yaml文件,如下所示:
docs:
3456: name_of_file_01.png
4567: name_of_file_02.txt
我错过了什么?谢谢你的帮助。
答案 0 :(得分:0)
我认为你应该为调试提供更多信息。 如:在“执行方法”下添加“Rails.logger.info”之类的语句,以查看异常抛出的位置
答案 1 :(得分:0)
我的错。我不知道这是一个独立的过程,需要一些要求:
require 'yaml'
require 'uri'
class Document < ActiveRecord::Base
end
之后,一切正常。
非常感谢。