2009-11-05 31 views
0

我收到以下錯誤,當我通過DelayedJob運行我的任務:DelayedJob與acts_as_ferret在生產模式

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錯誤。但是,當我在生產模式下從控制檯運行此SAME任務時,它工作正常。任何想法我怎麼能確保delayed_job的有:

  1. 真正加載的生產環境。我在腳本/ delayed_job中設置了RAILS ['ENV]] ='production'來確保這一點。 (我猜這應該是好的)

  2. 通過模型配置了雪貂嗎?

回答

0

這也發生在我身上。在延遲作業運行期間,您需要禁用索引。

在你的工人定義(像RAILS_ROOT/lib目錄/ worker.rb),並給出了一個名爲Post模型,你應該包括這樣一行:

class Worker < Struct.new(:stuff) 
    def perform 
    Post.disable_ferret 
    <do some stuff> 
    . 
    . 
    . 
    end 
end