Ruby on rails 轨道5:与Phusion乘客一起使用水豚

Ruby on rails 轨道5:与Phusion乘客一起使用水豚,ruby-on-rails,rspec,capybara,passenger,Ruby On Rails,Rspec,Capybara,Passenger,我正在尝试在Rails 5应用程序上运行规范。但是,我看到以下LoadError: 失败/错误:引发LoadError,'水豚无法加载puma的 其服务器,请将puma添加到您的项目或指定其他服务器 服务器通过类似于Capybara.server=:webrick的方式运行 我正在为生产服务器使用passengergem。是否有一种方法,我可以使用乘客的水豚测试以及? 提前谢谢我想你做不到: 委员会: 从: 我认为你做不到: 委员会: 从: 如果您真的想在测试时使用passenger运行您的应用

我正在尝试在Rails 5应用程序上运行规范。但是,我看到以下LoadError:

失败/错误:引发LoadError,'水豚无法加载puma的

其服务器,请将
puma
添加到您的项目或指定其他服务器 服务器通过类似于
Capybara.server=:webrick
的方式运行

我正在为生产服务器使用
passenger
gem。是否有一种方法,我可以使用乘客的水豚测试以及?
提前谢谢

我想你做不到:

委员会:

从:


我认为你做不到:

委员会:

从:


如果您真的想在测试时使用passenger运行您的应用程序,您需要使用rails测试环境(因此它使用测试数据库等)与passenger单独启动应用程序,然后设置

Capybara.run_server = false
Capybara.app_host = "http://<wherever the app is accessible>"
Capybara.run\u server=false
Capybara.app_host=“http://”
为了你的测试。这告诉水豚不要麻烦运行应用程序本身,只需连接到您已经运行的应用程序。您还需要使用类似于
database\u cleaner
的方法来处理测试之间的数据库重置,并非常小心地确保在每个测试结束时没有任何剩余的请求运行


当使用
puma
webrick
运行测试时,这些都不是必需的(rails<5.1而不是5.1+,通常需要database_cleaner,因为web服务器在同一进程中运行(不同线程)作为测试,它允许Capybara知道何时仍在处理请求,并允许Rails与测试共享DB连接。总的来说,如果您坚持使用
puma
webrick
进行测试,您的体验会更加流畅。

如果您真的想在测试时使用passenger运行应用程序,您需要使用rails测试环境(因此它使用测试数据库等)分别与passenger启动应用程序,然后设置

Capybara.run_server = false
Capybara.app_host = "http://<wherever the app is accessible>"
Capybara.run\u server=false
Capybara.app_host=“http://”
为了你的测试。这告诉水豚不要麻烦运行应用程序本身,只需连接到您已经运行的应用程序。您还需要使用类似于
database\u cleaner
的方法来处理测试之间的数据库重置,并非常小心地确保在每个测试结束时没有任何剩余的请求运行


当使用
puma
webrick
运行测试时,这些都不是必需的(rails<5.1而不是5.1+,通常需要database_cleaner,因为web服务器在同一进程中运行(不同线程)作为测试,它允许Capybara知道何时仍在处理请求,并允许Rails与测试共享DB连接。总的来说,如果你坚持使用
puma
webrick
进行测试,你会有一个更加流畅的体验。

只是一个猜测
Capybara.server=:乘客
在您的rails\u助手中?请参阅:这会导致一个错误,
Failure/error:Capybara.server.call(中间件、端口、主机),NoMethodError:undefined method
call'for nil:NilClass`所以我认为它不是可以传递给Capybara.server的符号:(看起来puma是您唯一的选择。请尝试将其添加到GEM文件中的测试组。可能还需要将passenger移动到您的生产组中。只是猜测一下。
Capybara.server=:rails\u helper中的passenger
?请参阅:这会导致错误,
失败/错误:Capybara.server.call(中间件、端口、主机),NoMethodError:undefined方法
call'for nil:NilClass`因此我认为它不是一个可以传递给Capybara.server的符号:(看起来puma是您唯一的选择。请尝试将其添加到您的GEM文件中的测试组。可能还需要将passenger移动到您的生产组中。我已将passenger添加到生产组中,并坚持使用puma进行开发和测试。我很惊讶passenger文档没有说默认情况下这样做,因为它基本上与标准不兼容Rails测试工具。我已经将passenger添加到了生产组中,并坚持使用puma for dev&test。我很惊讶passenger文档没有说默认情况下这样做,因为它基本上与标准Rails测试工具不兼容。
Capybara.run_server = false
Capybara.app_host = "http://<wherever the app is accessible>"