Ich habe Schwierigkeiten, Delayed_job (Kollektiv Idee v2.0 in einer Rails 2.3.8 App) zu verwenden.Delayed_job in Schienen, die "Null Objekt" Fehler
Ich rufe den Job von einer application_controller Methode:
...
Delayed::Job.enqueue(S3MoverJob.new(docs))
Wo docs ist ein Hash mit IDs und Namen der Dateien.
In meinem Lib-Verzeichnis habe ich die Klasse 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
Das Problem ist, dass es erhöht: S3MoverJob fehlgeschlagen mit NoMethodError: Sie haben ein Null-Objekt, wenn Sie es nicht erwartet!
Ich schaute in den Handler, in der DB, und es wurde mit der Liste der IDs und Dateinamen dem ausführen Methode, um die YAML-Datei liefern, wie folgt aus:
docs:
3456: name_of_file_01.png
4567: name_of_file_02.txt
Was bin ich? Danke für die Hilfe.
Sie können einige Antworten für die Fragen, die Sie zuvor gestellt haben, als akzeptiert markieren, sonst wird niemand Ihnen antworten wollen. –
Ein Stacktrace wäre hilfreich. – betamatt
Was es wirft (Entwicklung): '[Worker (Host: iMac pid: 1789)] Starten von Job Worker [Worker (Host: iMac pid: 1789)] S3MoverJob fehlgeschlagen mit NoMethodError: Sie haben ein Nullobjekt, wenn Sie didn erwarte es nicht! Sie haben möglicherweise eine Instanz von ActiveRecord :: Base erwartet. Der Fehler trat bei der Auswertung von null auf. [] - 0 fehlgeschlagene Versuche [Worker (host: iMac pid: 1789)] 1 Jobs bei 68.9376 j/s verarbeitet, 1 fehlgeschlagen ... [Worker (Host: iMac pid: 1789)] S3MoverJob ist mit NoMethodError fehlgeschlagen: Sie haben ein Nil-Objekt, wenn Sie es nicht erwartet haben! ' – Valadares