gpt4 book ai didi

ruby-on-rails - 了解 rails 与 Puma 和 Capybara 的冲突。如何在 Gemfile 中正确安装 puma?

转载 作者:行者123 更新时间:2023-12-05 02:58:43 26 4
gpt4 key购买 nike

我继承了一个代码库,其中的测试已经放弃了一年多一点。我正在尝试尽可能多地清理测试套件,但我很难梳理我的集成测试 1. Capybara 2. Puma, 3. Selenium, 4. 使用 rails s 启动 Rails Server。

这是我对 Rails 4.2 应用程序的初始设置和问题。因此,当我执行 Rails 测试时,从一开始就没有做任何事情,我收到以下错误:

Capybara is unable to load puma for its server, please add puma to your project or specify a different server via something like Capybara.server = :webrick. (LoadError).

我想指出的是,在名为 start-dev 的单独文件中,我的内容如下:

rails s -b 0.0.0.0

当我使用 ./start-dev 执行此命令时,我可以使用 /etc/hosts 127.0.0.1 secure.ssl 中定义的此 url 查看我的开发应用程序。本地

现在这里是我开始遇到麻烦的地方,通过阅读一些关于 capybara 和美洲狮的 github 论坛,我首先将美洲狮添加到我的 Gemfile 中并捆绑安装,但现在我无法通过浏览器在 secure.ssl.local.

这是我得到的错误:

/usr/lib/ruby/2.6.0/uri/rfc3986_parser.rb:67:in `split': bad URI(is not URI?): "tcp://0.0.0.0\r:3000" (URI::InvalidURIError)

我注意到在启动时,当我执行 ./start-dev 如果你记得有 rails s -b 0.0.0.0,我看到这个:

Booting Puma rails 4.2.11.1 application starting in development on https://0.0.0.0:3000

所以我对这个错误感到困惑。 Puma 是否阻塞了我的 3000 端口,这意味着我必须更改 Puma 的端口?更令人困惑的是,我没有在终端中运行 ./start-dev 而只是运行 rails s -b 0.0.0.0 它神奇地工作,除了它仅当我导航到 localhost:3000 而不是 secure.ssl.localhost 时才有效。这很重要,因为在 secure.ssl.localhost 上我有并且需要证书,而 localhost 我不需要。

最后又增加了一层困惑,当我在安装了 puma gem 的情况下运行测试并运行 rake test 我用 Puma 得到了这个:

Capybara starting Puma... * Version 4.2.1 , codename: Distant Airhorns * Min threads: 0, max threads: 4 * Listening on tcp://127.0.0.1:36608

而且测试需要很长时间才能加载。发生了很多事情,但我想我的问题可以总结如下?当我将 puma 安装到我的 rails 应用程序中时,我是否需要在特定端口上指定它以便它不会与我的应用程序冲突?没有 puma,我的测试无法运行,我的 ./start-dev 文件也能正常工作。使用 Puma,我的测试可以正常工作,但我的 ./start-dev 文件不再可用。 puma的配置肯定有一个标准。谢谢。

最佳答案

通过将 puma 放入测试组来为测试环境安装 puma:

group :test do
gem "puma"
end

或者按照 Capybara 的建议将 Capybara.server = :webrick 放入您的 spec/rails_helper.rb

仅供引用:如果安装了 puma,Rails 使用 puma 作为默认 Web 服务器

关于ruby-on-rails - 了解 rails 与 Puma 和 Capybara 的冲突。如何在 Gemfile 中正确安装 puma?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58700186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com