0

我正在为我的 rails 应用程序运行本地 puma 服务器。

这是在我的 local_env.yml 文件中

STAGING_URL: 'http://statrubytwotwo.test'

当服务器正在运行并且一切正常时,我可以点击 URl。如果我用 Cntrl-C 关闭服务器然后点击它仍在运行的服务器。

要让服务器关闭,我必须这样做

pkill -9 -f 'rb-fsevent|rails|spring|puma'

主要问题是我更改代码。执行 agit add * --all和 agit commit -m "something here"然后通过启动服务器bundle exec puma

服务器再次启动,但没有看到代码更改。puma 服务器正在运行旧代码?

更新 ====

我用以下方法杀死了所有人:

puma-dev -stop
pkill -9 -f 'rb-fsevent|rails|spring|puma'
pkill -USR1 puma-dev

我做了一个rails s,我看到了这个

Puma starting in single mode...
* Version 3.11.4 (ruby 2.3.1-p112), codename: Love Song
* Min threads: 0, max threads: 16
* Environment: staging
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop

我点击了https://stattwotwo.test域并加载了它。

我点击http://localhost:3000并没有找到

我点击了https://stattwotwo.test域并加载

无论我做什么都不会加载http://localhost:3000

我相信我记得 puma-dev 会在域名被击中时启动,即使它已关闭(forman 或 pow)?无论哪种方式,当它重新启动时,它都不会使用新代码。

4

1 回答 1

0

添加为响应,因为我无法将其全部放在评论中:

您需要找出您正在使用的工具。我的猜测是 puma-dev,你通过这里将它安装为后台进程

看看能不能确认。

通常,如果有 2 台服务器在运行,但运行在 puma/rails 默认值 3000 以外的端口上,你会遇到冲突,这是默认bundle exec puma运行的(我认为?)

如果是这种情况,您已经在不同的端口上启动了新服务器,而旧服务器(从启动时开始运行旧的缓存代码)仍在运行。这就是为什么你看不到变化。

你可以确认几件事:

  • 不要做bundle exec puma,做rails s并检查日志到屏幕,看看是否:3000
  • 像以前一样杀死你的 puma,但访问你的 URL 看看它是否还在运行
  • 重新开始rails s,并访问http://localhost:3000并查看您的代码在您重新加载页面时是否按预期更改。
  • puma-dev -stop,然后rails s,访问您的 .test 网址,看看它是否中断(这意味着 puma-dev 正在后台运行)
于 2019-02-21T22:44:12.863 回答