Ok, me gustaría crear una acción en Rails para reiniciarlo. Hice un poco de búsqueda y encontró:¿Cómo reiniciar los raíles desde Rails?
http://snippets.dzone.com/posts/show/5002
Lo que sugiere 2 comandos, uno para detener y otro para reiniciar. Los siguientes muertes:
ps -a|grep "/usr/local/bin/ruby script/server"|grep -v "grep /usr"|cut -d " " -f1|xargs -n 1 kill -KILL $1
La señal HUP no se reinicia para mí, así que trató de destrozar el comando anterior (ajustado para que el comando funcionó bien con la forma en que estaba empezando el servidor bajo Ubuntu):
ps -eaf|grep "ruby script/server"|grep -v grep|cut -d " " -f3|xargs -n 1 kill -KILL $1;script/server
Esto funciona bien en mi entorno, por lo que trató de establecer una acción para ejecutarlo:
def restart
fork { exec "ps -eaf|grep \"ruby script/server\"|grep -v grep|cut -d \" \" -f3|xargs -n 1 kill -KILL $1;script/server" }
redirect_to "/server_maintenance"
end
la acción mata a la multa del servidor, pero en realidad no se inicia el servidor de servicios u P:
=> Booting Mongrel
=> Rails 2.3.2 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/tcphack.rb:12:in `initialize_without_backlog': Address already in use - bind(2) (Errno::EADDRINUSE)
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/tcphack.rb:12:in `initialize'
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:93:in `new'
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:93:in `initialize'
from /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/handler/mongrel.rb:10:in `new'
from /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/handler/mongrel.rb:10:in `run'
from /usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/commands/server.rb:111
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from script/server:3
No me entiendo muy bien la dirección ya está en uso cuando Mestizo parece haber salido solo.
me encontré con esta pregunta:
How do you restart Rails under Mongrel, without stopping and starting Mongrel
pero las señales no causan el reinicio en mi entorno, que acaba de terminar matando el proceso.
¿Alguien tiene alguna idea sobre lo que puede funcionar? Para algunas notas sobre mi entorno: instalé Rails de una nueva versión de RubyGems y Mongrel. Utilizo script/server para iniciar el servidor, que por supuesto usa Mongrel. Estoy en Ubuntu Hardy Heron.
Gracias por la respuesta! De hecho lo hice funcionar un poco antes de que respondieras, pero el enlace muestra más o menos cómo lo hice funcionar, ¡así que votaré! –