Verzögerte Job mit acts_as_ferret im Produktionsmodus
-
16-09-2019 - |
Frage
Ich erhalte die folgende Fehlermeldung, wenn ich meine Aufgabe über DelayedJob laufen:
closed stream
/usr/lib/ruby/1.8/drb/drb.rb:961:in `select'
/usr/lib/ruby/1.8/drb/drb.rb:961:in `alive?'
/usr/lib/ruby/1.8/drb/drb.rb:1211:in `alive?'
/usr/lib/ruby/1.8/drb/drb.rb:1168:in `open'
/usr/lib/ruby/1.8/drb/drb.rb:1166:in `each'
/usr/lib/ruby/1.8/drb/drb.rb:1166:in `open'
/usr/lib/ruby/1.8/drb/drb.rb:1163:in `synchronize'
/usr/lib/ruby/1.8/drb/drb.rb:1163:in `open'
/usr/lib/ruby/1.8/drb/drb.rb:1092:in `method_missing'
/usr/lib/ruby/1.8/drb/drb.rb:1110:in `with_friend'
/usr/lib/ruby/1.8/drb/drb.rb:1091:in `method_missing'
/usr/lib/ruby/gems/1.8/gems/acts_as_ferret-0.4.3/lib/remote_index.rb:31:in `<<'
/usr/lib/ruby/gems/1.8/gems/acts_as_ferret-0.4.3/lib/instance_methods.rb:90:in `ferret_update'
...
Aus dem Fehler seines offensichtlich, dass delayed_job konnte die ferret_server finden. Allerdings, wenn ich diese gleiche Aufgabe von der Konsole im Produktionsmodus ausführen, funktioniert es gut. Irgendwelche Ideen, wie ich sicherstellen kann, dass delayed_job hat:
-
geladen wirklich die Produktionsumgebung. Ich habe RAILS [ 'ENV]] = ‚Produktion‘ im Skript / delayed_job um dies sicherzustellen. (Ich denke, das sollte gut sein)
-
wurde über Modelle Frettchen konfiguriert?
Lösung
Dies geschah zu mir. Sie müssen während des Laufens des verzögerten Jobs Frettchen von der Indizierung deaktivieren.
Ihre Arbeiter Definition (so etwas wie RAILS_ROOT / lib / worker.rb), und da ein Modell namens Post, sollten Sie eine Zeile wie diese sind:
class Worker < Struct.new(:stuff)
def perform
Post.disable_ferret
<do some stuff>
.
.
.
end
end