我们的应用程序在不同的端口运行两个Rails服务器,这些服务器相互通信。使用Rails 3.2.8,我可以打开一个终端,cd
到项目,运行rails s -p3000
,打开另一个终端,运行rails s -p3001
,一切正常。 gem文件包含thin
,因此thin
会自动启动,但使用rails s
将允许在需要时使用--debugger
。
自更新Rails 3.2.11以来,这不再适用。我收到一个错误:“服务器已在运行。请检查/home/george/Projects/dashboard/tmp/pids/server.pid”。我可以直接在两个端口上启动thin
,但是没有调试支持。在另一个上启动thin
而在另一个上启动rails
似乎不起作用,但是当错误停止服务器时,并不清楚所有服务器任务都被杀死了。
答案 0 :(得分:33)
两个命令都在检查默认的PID文件位置(tmp/pids/server.pid
),因此您会看到此错误。尝试运行多个服务器,如下所示:
服务器1: bundle exec rails s
服务器2: bundle exec rails s -p 3001 -P tmp/pids/server2.pid
答案 1 :(得分:2)
在Stackoverflow上发布的其他内容提到如果你在使用rails 3.2.11时遇到问题,请尝试在{1.4}处锁定rack
。到目前为止,这似乎有效。我补充说:
gem 'rack' , '1.4.1'
到gemfile
,然后执行
bundle update rack
答案 2 :(得分:0)