我想知道是否有办法在新的Rails 5.1系统测试中使用Puma服务器(Rails默认)?
目前我们所有的项目都使用tiny_tds,但我试图用Capybara / Selenium试验5.1系统测试,但当然因为我没有安装/运行Puma而失败。
我查看了文档,但没有看到任何关于声明要使用哪种类型服务器的信息。是否连接到SQL Server数据库,所以我不知道Puma是否能够做到这一点(这可能就是为什么首先使用tiny_tds)。
答案 0 :(得分:1)
您将数据库适配器和机架式网络服务器混淆不清。
Puma(像Webrick,Thin,Unicorn等)是一个通用的Rack Web服务器。它位于并等待来自vistors的传入请求,并通过使用包含环境和请求的哈希调用它们将它们分派给应用程序(如Rails应用程序)。应用程序返回包含响应的数组。服务器将其发送回访问者。
另一方面, tiny_tds
是数据库适配器。它用于将应用程序连接到数据库。 Web服务器几乎完全忽略了应用程序如何根据请求创建响应。这包括使用的任何数据库。
在Rails 5中,大多数服务器都不需要配置。您只需将gem添加到gemfile并运行bundle install
并将它们自行插入。没有单独的安装步骤。
之前的情况并非如此,这就是为什么Webrick - 一个唯一真正的优点是它不需要配置的服务器是默认的。它现在是与Webrick不同的Puma适合生产。
在不同的环境中使用不同的服务器并不是一个好主意,因为它违反了dev/prod parity的想法。你的开发者测试环境应尽可能接近您部署的内容,以便在最终生产之前捕获错误。这意味着您应该运行相同的服务器,相同的数据库等。
为测试套件的不同部分运行一个单独的测试服务器听起来像一个真正的傻瓜差事 - 如果它甚至可能没有破坏框架到位。
对于SQL Server,activerecord-sqlserver-adapter可以使用tiny_tds
作为后端。