【问题标题】:Why would I want to use unicorn or thin instead of WEBrick for development purposes?为什么我要使用 unicorn 或 thin 而不是 WEBrick 用于开发目的?
【发布时间】:2012-04-11 01:01:46
【问题描述】:

我最近发现有些人更喜欢使用unicorn_rails 而不是默认的 WEBrick 作为开发 Rails 应用程序的 Web 服务器。

我知道如果我想在生产环境中使用 unicorn,在开发环境中尝试一下可能是有意义的,但由于生产环境中的配置不同,这是否相关?

使用thinunicorn 代替WEBrick 来开发Rails 应用程序有什么真正的、有形的优势,例如速度或一些附加功能?只是个人喜好问题?

【问题讨论】:

  • 有趣的问题。我在开发中放弃了 WEBrick,因为在 ruby​​ 1.9.3 中使用调试器时它经常崩溃。使用薄,事情会变得更快。我一直认为 WEBrick 是原始的并且只为开发而设计。我很高兴使用 Thin 进行开发,并且 unicorn 给了我 1 秒的部署停机时间。 (我无法让独角兽与 RubyMine 调试器一起工作,thin 没有这样的问题)。
  • 感谢您不再问另一个“什么是最好的......”问题,这些问题将“因不具建设性而被关闭”。这个问题对于像这样的社区非常有帮助:)

标签: ruby-on-rails thin webrick unicorn


【解决方案1】:

除了已经给出了很好的概述的其他答案之外,您可能还需要考虑在 WEBrick 上使用 unicorn 的技术原因:

WEBrick 不支持子域。对 HTTPS 的支持是 rather hacky to implement

因此,如果您有一个使用子域的 SaaS 应用程序,或者您只是想拥有 admin/api/... 子域,那么 WEBrick 不是一个选择。 POW 适用于 Mac OS X,但这不适用于 Linux 开发人员。

【讨论】:

  • +1 用于提及 POW。如果您使用的是 Mac,让生活变得简单。
【解决方案2】:

我的个人经验是 WEBrick 在我的开发环境中比在相当大的 Rails 应用程序(大量的 gem、路线等)中的 Unicorn 和 Thin (OS X) 更快。但是你应该自己测量它,在你的机器上查看你的应用程序(我使用ab 并使用 Chrome 的开发者工具进行了测试)。

但是在生产和开发中使用相同的服务器是一个非常好的主意。

【讨论】:

    【解决方案3】:

    我的个人经验是,当使用远程机器(ubuntu,4 核,8G 内存,通过 VPN -> ssh 连接)作为您的开发环境(就像我一样)时,Unicorn 比 WEBrick 快得多——我看到 sub Unicorn 的页面加载时间为 -1 秒,而 WEBrick 需要 3 到 5 秒或更长时间。我不知道为什么,这可能与我的网络有关,而不是其他任何事情,但这是我个人所看到的。

    我没有使用 Thin 进行开发,因为我读到它需要额外的 gem 才能在开发模式下重新加载类(我无法亲自验证其准确性)。另外,我更熟悉 Unicorn 并在生产中使用它。

    【讨论】:

    • Unicorn 将使用哪个 gem 来支持类重新加载(当类更改时)。这是我偏爱 Webrick 的唯一原因。
    • 没有做更多的研究,我无法命名一个宝石。但是,您可以使用具有正确配置的观察者和 HUP 信号。请参阅:unicorn.bogomips.org/SIGNALS.html。正如我所说,我通常使用 WEBrick 进行开发以动态重新加载类。
    【解决方案4】:

    开发尽可能接近生产环境很重要。它有助于确保应用程序在部署到生产环境时按预期工作,而不是在运行时偶然发现错误。

    在复制生产环境的构建服务器上使用持续测试可以缓解此问题。即使您没有在相同的环境中积极开发,持续测试也可以让您了解应用程序正在以预期的方式运行。

    至于速度,在开发模式下运行 Rails 应用程序的性能损失将抵消各种 Web 服务器带来的任何好处。

    【讨论】:

      猜你喜欢
      • 2011-11-15
      • 2011-12-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      • 2017-11-07
      • 2016-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多