Pregunta

Me sale el siguiente error al ejecutar mi tarea a través 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'
...

Desde el error es obvio que delayed_job no pudo encontrar el ferret_server. Sin embargo, cuando corro esta misma tarea desde la consola en modo de producción, que funciona bien. Alguna idea de cómo puedo asegurar que tiene delayed_job:

  1. muy cargado el entorno de producción. Me puse CARRILES [ 'ENV]] = 'producción' en el script / delayed_job para asegurar esto. (Supongo que esto debe ser bueno)

  2. got hurón configura a través de modelos?

¿Fue útil?

Solución

Esto me pasó a mí también. Es necesario desactivar hurón de la indexación durante la ejecución del trabajo retrasado.

En la definición de trabajador (algo así como RAILS_ROOT / lib / worker.rb), y teniendo en cuenta un modelo denominado Post, que debe incluir una línea como la siguiente:

class Worker < Struct.new(:stuff)
  def perform
    Post.disable_ferret
    <do some stuff>
    .
    .
    .
  end
end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top