Ok, quindi mi piacerebbe creare un'azione in Rails per riavviarsi. Ho fatto un po 'di ricerca ed ho trovato:Come riavviare Rails dall'interno di Rails?
http://snippets.dzone.com/posts/show/5002
Il che suggerisce 2 comandi, uno per fermare e un altro per riavviare. I seguenti uccisioni:
ps -a|grep "/usr/local/bin/ruby script/server"|grep -v "grep /usr"|cut -d " " -f1|xargs -n 1 kill -KILL $1
Il segnale HUP non si riavvia per me, così ho cercato di storpiare il comando precedente (regolata in modo il comando ha funzionato bene con il modo stavo iniziando il server con Ubuntu):
ps -eaf|grep "ruby script/server"|grep -v grep|cut -d " " -f3|xargs -n 1 kill -KILL $1;script/server
Questo funziona bene nel mio ambiente, così ho cercato di impostare un'azione di eseguirlo:
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
l'azione uccide la multa server, ma in realtà non avviare il server back 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
io non sono molto Capire perché l'indirizzo è già in uso quando Mongrel sembra essere appena uscito.
Ho trovato questa domanda:
How do you restart Rails under Mongrel, without stopping and starting Mongrel
ma i segnali non causano il riavvio nel mio ambiente, hanno appena finiscono per uccidere il processo.
Qualcuno ha qualche idea su cosa può funzionare? Per alcune note sul mio ambiente: ho installato Rails da una nuova versione di RubyGems e Mongrel. Io uso script/server per avviare il server, che ovviamente usa Mongrel. Sono su Ubuntu Hardy Heron.
Grazie per la risposta! In realtà l'ho fatto funzionare un po 'prima che tu rispondessi, ma il link mostra più o meno come l'ho fatto funzionare, quindi avrò l'uptote! –