質問

I以下のエラーが出かけると自分よDelayedJob:

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'
...

からそのエラーになるdelayed_jobることができませんferret_server.しかし、このと同じタスクコンソールから生産モードを動作させることができます。そのアイデアかライアンスを保証することができdelayed_jobは:

  1. 本当に読み込まれると、生産環境です。設定したレール['ENV]]='生産のスクリプト/delayed_jobめます。(こばる)

  2. たferret設。

役に立ちましたか?

解決

これは、あまりにも私に起こりました。あなたは遅れてジョブの実行中にインデックスからフェレットを無効にする必要があります。

あなたの労働者の定義では(RAILS_ROOT / libに/ worker.rbのようなもの)、およびポストと呼ばれるモデルを考えると、あなたはこのような行が含まれている必要があります:

class Worker < Struct.new(:stuff)
  def perform
    Post.disable_ferret
    <do some stuff>
    .
    .
    .
  end
end
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top