【问题标题】:Rails 5.1 Running System Tests on Puma?Rails 5.1 在 Puma 上运行系统测试?
【发布时间】:2017-10-17 15:46:09
【问题描述】:

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

目前在我们所有的项目中,我们都使用 tiny_tds,但我尝试使用 Capybara/Selenium 进行 5.1 系统测试,但它当然失败了,因为我没有安装/运行 Puma。

我浏览了文档,没有看到任何关于声明您要使用哪种类型的服务器的信息。正在连接到 SQL Server 数据库,所以我不知道 Puma 是否能够做到这一点(这可能就是首先使用 tiny_tds 的原因)。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-5.1


    【解决方案1】:

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

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

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

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

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

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

    为您的测试套件的不同部分运行一个单独的测试服务器听起来像是一个真正的傻瓜差事 - 如果它甚至可能不破坏框架。

    对于 SQL Server,activerecord-sqlserver-adapter 可以使用 tiny_tds 作为后端。

    【讨论】:

    • 不管我仍然需要将 puma 放在 gemfile 中,对吗?即使它现在是默认的?因为它似乎不包含在这个项目 gemfile 中(这是一个 5.1 rails 项目)
    • 当您使用 Rails 5.1 生成应用程序时,Puma 会包含在 gemfile 中。默认情况下运行rails new 也会运行捆绑安装,因此应该安装它。我刚刚测试过。
    • 但是,如果你想使用 puma,请将 gem 添加到 gemfile 并运行 bundle install。
    猜你喜欢
    • 2017-12-11
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多