如何并行 运行 多个 rails 环境?

How to run multiple rails environments in parallel?

我想 运行 在同一台服务器上对同一个项目进行两次。所以我为此定义了两个环境alphabeta

然后我尝试启动服务器两次:

$ ruby bin/rails server -b 0.0.0.0 -p 3000 -e alpha --pid tmp/pids/server-alpha.pid
$ ruby bin/rails server -b 0.0.0.0 -p 4000 -e beta --pid tmp/pids/server-beta.pid

不幸的是,其中一个服务器(第二个启动)在识别到还有另一个实例时停止。

环境 alpha 开始:

=> Booting Puma
=> Rails 5.0.0.1 application starting in alpha on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.6.0 (ruby 2.3.1-p112), codename: Sleepy Sunday Serenity
* Min threads: 5, max threads: 5
* Environment: alpha
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop

环境 beta 开始:

=> Booting Puma
=> Rails 5.0.0.1 application starting in beta on http://0.0.0.0:4000
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.6.0 (ruby 2.3.1-p112), codename: Sleepy Sunday Serenity
* Min threads: 5, max threads: 5
* Environment: beta
* Listening on tcp://0.0.0.0:4000
Use Ctrl-C to stop

环境alpha重启(不知道为什么!):

* Restarting...
=> Booting Puma
=> Rails 5.0.0.1 application starting in alpha on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
A server is already running. Check tmp/pids/server-alpha.pid.
Exiting

显然 pid 文件仍然存在。但是,当我启动另一个服务器时,如何避免重新启动服务器呢?我如何告诉 rails 在重新启动时删除 pid 文件?或者我还能如何处理这个问题?

我不确定这是否有效,但尝试在 --pid 之后使用 = 像这样

$ ruby bin/rails server -b 0.0.0.0 -p 3000 -e alpha --pid=tmp/pids/server-alpha.pid $ ruby bin/rails server -b 0.0.0.0 -p 4000 -e beta --pid=tmp/pids/server-beta.pid

您的 config/puma.rb 中可能有 plugin :tmp_restart。每次 tmp/restart.txt 被触摸(这是每次服务器启动时),另一个服务器重新启动。

只需注释该行即可(您将无法再通过触摸 tmp/restart.txt 重新启动 rails 服务器)。