【发布时间】:2020-03-01 04:02:36
【问题描述】:
我正在继承一个代码库,其中测试已被放弃一年多一点。我正在尝试尽可能多地清理测试套件,但我很难用 1. Capybara 2. Puma,3. Selenium,4. 用 rails s 启动 Rails 服务器来梳理我的集成测试。
这是我对 Rails 4.2 应用程序的初始设置和问题。因此,从一开始就没有做任何事情,当我执行 rails 测试时,我收到以下错误:
Capybara 无法为其服务器加载
puma,请将puma添加到您的项目中,或通过Capybara.server = :webrick之类的方式指定其他服务器。 (加载错误)。
我想指出,在一个名为 start-dev 的单独文件中,我的内容中有以下内容:
rails s -b 0.0.0.0
当我使用 ./start-dev 执行此命令时,我可以使用在我的 /etc/hosts 127.0.0.1 secure.ssl.local 中定义的此 url 查看我的开发应用程序
现在这里是我开始遇到麻烦的地方,通过阅读一些关于 capybara 和 puma 的 github 论坛,我首先将 puma 添加到我的 Gemfile 并捆绑安装,但现在我无法通过浏览器在@看到我的开发应用程序987654328@.
这是我得到的错误:
/usr/lib/ruby/2.6.0/uri/rfc3986_parser.rb:67:in `split': bad URI(不是 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 中得到了这个:
水豚首发彪马... * 版本 4.2.1 ,代号:遥远的气喇叭 * 最小线程:0,最大线程:4 * 监听 tcp://127.0.0.1:36608
而且测试需要很长时间才能加载。发生了很多事情,但我想我的问题可以总结如下?当我将 puma 安装到我的 rails 应用程序中时,我是否需要在特定端口上指定它以便它不会与我的应用程序冲突?如果没有 puma,我的测试将无法运行,而我的 ./start-dev 文件可以正常工作。使用 puma,我的测试有点工作,但我的 ./start-dev 文件不再存在。当然,必须有一个标准来配置 puma。谢谢。
【问题讨论】:
标签: ruby-on-rails ruby