Rails更新到3.2.11将中断运行多个服务器



我们的应用程序在彼此通信的不同端口上运行两个Rails服务器。使用Rails 3.2.8,我可以打开一个终端,cd到项目,运行rails s -p3000,打开另一个终端,运行rails s -p3001,一切工作正常。gemfile包含thin,因此thin将自动启动,但是使用rails s将允许在需要时使用--debugger

自从更新Rails 3.2.11,这不再工作。我得到一个错误:"服务器已经在运行。检查/home/george/Projects/dashboard/tmp/pids/server.pid"。我可以在两个端口上直接启动thin,但随后没有调试支持。在一个服务器上启动thin,在另一个服务器上启动rails似乎不起作用,但是当错误停止服务器时,不清楚是否所有服务器任务都被杀死了。

这两个命令都在检查默认的PID文件位置(tmp/pids/server.pid),所以您会看到这个错误。尝试像这样运行多个服务器:

Server 1: bundle exec rails s

Server 2: bundle exec rails s -p 3001 -P tmp/pids/server2.pid

张贴在Stackoverflow的其他地方是提到,如果你有rails 3.2.11的问题,尝试锁定rack在1.4.1。到目前为止,这似乎是可行的。我说:

gem 'rack' , '1.4.1'

gemfile,然后执行

bundle update rack

试试使用foreman https://github.com/ddollar/foreman

Railscast: http://railscasts.com/episodes/281-foreman?view=comments

最新更新