我得到的以下错误时,我执行我的任务通过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. 有鼬配置,通过模特儿吗?

有帮助吗?

解决方案

这发生在我身上了。你需要禁止鼬从索引编制运行期间延迟的工作。

在你的工作人员的定义(喜欢的东西RAILS_ROOT/lib/工作人员。rb),并给出一个模型被称为后,应该包括一条线这样的:

class Worker < Struct.new(:stuff)
  def perform
    Post.disable_ferret
    <do some stuff>
    .
    .
    .
  end
end
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top