我们的应用程序在彼此通信的不同端口上运行两个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