Rails 5.1 运行 Puma 系统测试?

Rails 5.1 Running System Tests on Puma?

我想知道是否有办法在新的 Rails 5.1 系统测试中使用 Puma 服务器(Rails 默认值)?

现在我们所有的项目都使用 tiny_tds,但我试图用 Capybara/Selenium 进行 5.1 系统测试,但它当然失败了,因为我没有 Puma installed/running.

我查看了文档,但没有看到任何关于声明您要使用的服务器类型的内容。我们正在连接到 SQL 服务器数据库,所以我不知道 Puma 是否能够做到这一点(这可能就是为什么我们首先使用 tiny_tds 的原因)。

您混淆了数据库适配器和机架式 Web 服务器,它们是完全不同的东西。

Puma(如 Webrick、Thin、Unicorn 等)是通用 Rack 网络服务器。它等待来自访问者的传入请求,并通过使用包含环境和请求的哈希调用它来将它们分派给应用程序(如 Rails 应用程序)。应用程序 returns 一个包含响应的数组。服务器将其发回给访问者。

另一方面,

tiny_tds 是一个数据库适配器。它用于将应用程序连接到数据库。 Web 服务器几乎完全不知道应用程序如何根据请求创建响应。这包括使用的任何数据库。

在Rails 5 大多数服务器不需要配置。您只需将 gem 添加到 gem 文件和 运行 bundle install,它们就会自行插入。没有单独的安装步骤。

之前情况并非如此,这就是为什么 Webrick - 一个唯一真正优点是它不需要配置的服务器是默认的。现在是 Puma,不像 Webrick 适合生产。

在不同的环境中使用不同的服务器不是一个好主意,因为它违反了 dev/prod parity 的想法。您的开发和测试环境应尽可能接近您要部署的环境,以便您可以在错误最终进入生产环境之前发现它们。这意味着您应该 运行 使用相同的服务器、相同的数据库等

运行 为测试套件的不同部分提供单独的测试服务器听起来像是一个真正的傻瓜差事 - 如果它甚至可以在不破坏框架的情况下实现。

对于 SQL 服务器有 activerecord-sqlserver-adapter 可以使用 tiny_tds 作为后端。