Ich habe eine App, die lange gut funktioniert. Ich schalte threadsafe! Ein, und jetzt funktioniert der verzögerte Job nicht und sagt, dass er keine meiner Modelldateien finden kann.
%Vor%Dies ist keine benutzerdefinierte Jobklasse, die ich in / lib definiert habe. Dies ist eine Modelldatei in app / models
Was könnte dazu führen, dass diese Klasse nicht geladen wird?
Wie auf dem Problem, das Sie protokolliert haben, gepostet, falls andere diesen SO-Beitrag zuerst finden:
Ich habe gerade dieses Problem auch gefunden ... und hier ist, was ich gefunden habe: Rails lädt Klassen nicht gerne, wenn die App über eine Rake-Task geladen wird (und so macht DJ seine Sache).
Also, was ich getan habe, ist dieser Codeschnipsel in meinem production.rb
:
Rails legt diese globale Variable fest, wenn sie von einer Rake-Task geladen wird. Hässlich, aber scheint jetzt für mich in Ordnung zu sein ... Natürlich, wenn Sie Rake-Aufgaben haben, die Multi-Threading sind, dann ist das nicht ideal, und Sie sollten wahrscheinlich Rails.application.eager_load aufrufen! für diese Aufgaben. Ich vermute, Multi-Threaded Rake-Aufgaben sind jedoch selten.
Meine Jobs sind immer noch fehlgeschlagen, auch nachdem Sie die Methode pat verwendet haben, um Threadsafe für Rake-Jobs nicht zu verwenden.
Ich musste die folgende manuelle Ladetechnik verwenden, die auf der GitHub Wiki Seite :
%Vor%nicht wirklich verwandt, aber ich hatte heute genau dieselbe Fehlermeldung mit verzögertem Job, ohne threadsafe zu aktivieren.
Grund und Lösung war viel trivialer - es gab ein anderes Ruby-Produkt auf unserem Server, das einen verzögerten Job verwendete, und die Arbeiter hatten keine benannte Warteschlange, also nahmen sie zufällige Jobs aus der Warteschlange, die ich eingerichtet hatte.
Tags und Links ruby-on-rails delayed-job