在 Ruby on Rails 应用程序中更新 Puma 后,开发服务器无法工作

Posted

技术标签:

【中文标题】在 Ruby on Rails 应用程序中更新 Puma 后,开发服务器无法工作【英文标题】:Development server doesn't work after updating Puma in Ruby on Rails app 【发布时间】:2020-04-09 14:25:04 【问题描述】:

首先我要告诉您我在编程方面是个新手,所以如果解决方案简单明了,我深表歉意。

我在“Codeanywhere”上有一个 Ruby on Rails 应用程序,这是一个基于在线云的 IDE,我正在使用 Puma 查看正在开发的服务器。通常,只需输入“Rails s”,然后单击预览按钮即可查看我正在开发的应用程序。

但是,在进行“捆绑更新”后,这不再有效。我输入“Rails s”,它说服务器已经启动,但是当我单击预览按钮时,它说它无法连接并且没有服务器在运行。我已经缩小了范围,导致此问题的“更新”要么是 Rails gem 本身的更新,要么更可能是 Puma gem 的更新,它是控制此功能的 gem。

我尝试过“rails s --binding=0.0.0.0”,但也没有用,似乎只是更新破坏了它,但我需要更新,因为它是一个安全漏洞。如果我回滚更新,它可以正常工作,但我需要更新的 gem。

更新前的 Rails 版本:5.2.1 更新前的彪马版本:3.11

更新后的 Rails 版本:5.2.4 更新后的彪马版本:3.12.2

Rails S 输出为:

=> Booting Puma
=> Rails 5.2.4 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.2 (ruby 2.5.1-p57), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
^C- Gracefully stop

我们将不胜感激。

【问题讨论】:

rails s的rails版本、puma版本、puma配置和输出是什么?请添加您的问题。 好的,我已经完成了 看来服务器本身工作正常。我认为您必须更改 CodeAnywhere 中的配置。 有时将您的 Gemfile 中的 Rails 版本更改为用于创建应用程序的版本之外的其他版本可能会产生这样的后果。尝试更改 Puma 版本,看看是否是问题所在。 【参考方案1】:

我在更新到 Puma 3.12.2 后也刚刚点击了这个(Rails 6 以防万一有人关心)。

查看lib/puma/dsl.rb,我发现有两种方法可以将我的Rails 应用程序的config/puma.rb 更改为指定0.0.0.0

两者

set_default_host '0.0.0.0'
port        ENV.fetch("PORT")  3000 

port        ENV.fetch("PORT")  3000 , '0.0.0.0'

打印出来

[...]
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop
[...]

在启动和工作/听我说。

【讨论】:

以上是关于在 Ruby on Rails 应用程序中更新 Puma 后,开发服务器无法工作的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails - 在填写表单时更新 collection_select

Ruby on Rails 实时更新

Ruby on Rails:视图更改后,网站未更新

Ruby on Rails Rake在将rails项目从4.1.9更新到4.2.0后抛出“不正确的表名”错误

对链接进行 ajax 调用单击以更新链接本身(Ruby on Rails)

在 Ruby on Rails 中使用 ActionCable 更新多个 div 的最佳实践是啥?