繁体   English   中英

Rails 5:将水豚与Phusion乘客配合使用

[英]Rails 5: Using Capybara with Phusion Passenger

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

失败/错误:引发LoadError,“ Capybara无法为其服务器加载puma ,请将puma添加到您的项目中,或通过Capybara.server = :webrick类的东西指定其他服务器。

我正在将passenger宝石用于生产服务器。 有没有一种方法可以让我的乘客进行水豚试验? 提前致谢

如果您真的想在测试期间使用乘员来运行您的应用程序,则需要使用Rails测试环境(因此它使用测试数据库等)与乘员分别启动您的应用程序,然后进行设置

Capybara.run_server = false
Capybara.app_host = "http://<wherever the app is accessible>"

为您的测试。 这告诉Capybara不必费心运行应用程序本身,而只需连接到已经在运行的应用程序即可。 您还需要使用诸如database_cleaner东西来处理两次测试之间的数据库重置,并且要非常小心以确保在每次测试结束时都没有任何剩余的请求在运行。

当使用pumawebrick运行测试时,不需要执行任何操作(rails <5.1而不是5.1+时通常需要database_cleaner),因为Web服务器与测试在同一进程(不同的线程)中运行,从而使Capybara能够知道当请求仍在处理中时,并使Rails与测试共享数据库连接。 总体而言,如果坚持使用pumawebrick进行测试,您将获得更加流畅的体验。

我认为您不能这样做:

水豚文件

This block takes a rack app and a port and returns a 
rack server listening on that port

旅客回购区

This is fundamentally incompatible with Phusion Passenger's model. 
Such a Rack handler implies a single application and a single process.
Phusion Passenger runs multiple processes which can even serve multiple 
applications.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM