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:

  1. geladen wirklich die Produktionsumgebung. Ich habe RAILS [ 'ENV]] = ‚Produktion‘ im Skript / delayed_job um dies sicherzustellen. (Ich denke, das sollte gut sein)

  2. wurde über Modelle Frettchen konfiguriert?

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top