Ok, vì vậy tôi muốn tạo một hành động trong Rails để tự khởi động lại. Tôi đã làm một chút tìm kiếm và tìm thấy:Làm cách nào để khởi động lại Rails từ trong Rails?
http://snippets.dzone.com/posts/show/5002
nào cho thấy 2 lệnh, một để ngăn chặn và một để khởi động lại. Các kills sau:
ps -a|grep "/usr/local/bin/ruby script/server"|grep -v "grep /usr"|cut -d " " -f1|xargs -n 1 kill -KILL $1
Các tín hiệu HUP không khởi động lại đối với tôi, vì vậy tôi đã cố gắng để mangle lệnh trên (điều chỉnh để các lệnh làm việc tốt với cách tôi đã bắt đầu các máy chủ trong Ubuntu):
ps -eaf|grep "ruby script/server"|grep -v grep|cut -d " " -f3|xargs -n 1 kill -KILL $1;script/server
này hoạt động tốt trong môi trường của tôi, vì vậy tôi đã cố gắng để thiết lập một hành động để thực hiện nó:
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
hành động giết phạt server, nhưng không thực sự khởi động server lại 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
Tôi không hiểu tại sao địa chỉ này đã được sử dụng khi Mongrel dường như vừa mới thoát.
Tôi tìm thấy câu hỏi này:
How do you restart Rails under Mongrel, without stopping and starting Mongrel
nhưng các tín hiệu không gây khởi động lại trong môi trường của tôi, họ chỉ kết thúc giết chết quá trình này.
Bất kỳ ai có ý tưởng về những gì có thể hoạt động? Đối với một số lưu ý về môi trường của tôi: Tôi đã cài đặt Rails từ phiên bản mới của RubyGems và Mongrel. Tôi sử dụng kịch bản/máy chủ để bắt đầu máy chủ, trong đó tất nhiên sử dụng Mongrel. Tôi đang ở trên Ubuntu Hardy Heron.
Cảm ơn bạn đã trả lời! Tôi thực sự đã làm cho nó hoạt động một chút trước khi bạn trả lời, nhưng liên kết khá nhiều cho thấy làm thế nào tôi đã nhận nó làm việc, do đó, sẽ upvote! –