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オブジェクトを持っています!
DB内のハンドラーを調べたところ、次のようにIDとファイル名のリストを含むYamlファイルがperformメソッドに配信されていました。
docs:
3456: name_of_file_01.png
4567: name_of_file_02.txt
私は何が欠けていますか?私を助けてくれてありがとう。