我最近发现有些人更喜欢使用unicorn_rails
而不是默认的WEBrick作为开发Rails应用程序的Web服务器。
据我所知,如果我想在生产中使用独角兽,那么在开发中尝试使用它是有道理的,但由于生产中的配置不同,它是否甚至相关?
使用thin
或unicorn
代替WEBrick来开发Rails应用程序(如速度或其他一些功能),是否有任何真正的,有形的优势?或者这仅仅是个人偏好的问题?
答案 0 :(得分:18)
尽可能密切地开发生产环境非常重要。它有助于确保应用程序在部署到生产环境时按预期工作,而不是在运行时遇到错误。
通过在复制生产环境的Build服务器上使用Continuous Testing,可以缓解此问题。即使您没有在相同的环境中积极开发,持续测试也可以让您了解应用程序是否以预期的方式运行。
至于速度,在开发模式下运行Rails应用程序的性能将抵消各种Web服务器带来的任何好处。
答案 1 :(得分:5)
除了已经给出了相当不错的概述的其他答案之外,还有一个技术原因你可能想要考虑在WEBrick上使用独角兽:
WEBrick不支持子域名。支持HTTPS的是rather hacky to implement。
因此,如果您有使用子域的SaaS应用程序,或者您只是想拥有admin / api / ...子域,那么WEBrick就不是一个选项。 Mac OS X有POW,但这对Linux开发人员不起作用。
答案 2 :(得分:3)
我个人的经验是,当使用远程机器(ubuntu,4核,8G内存,通过VPN连接 - > ssh)作为您的开发环境(就像我一样)时,Unicorn比WEBrick快得多 - 我看到了使用Unicorn的亚1秒加载时间,而WEBrick需要3到5秒或更长时间。我不确定为什么,它可能与我的网络有更多关系,然后其他任何东西,但这是我个人看到的。
我没有使用Thin进行开发,因为我已经读过它需要一个额外的gem来允许在开发模式下重新加载类(我不能亲自验证它的准确性)。另外,我对Unicorn更熟悉并在生产中使用它。
答案 3 :(得分:1)
我个人的经验是,在一个相当大的Rails应用程序(许多宝石,路线等)中,WEBrick在我的开发环境中比Unicorn和Thin(OS X)更快。但是你应该自己测量它,在你的机器上看你的应用程序(我使用ab测试并使用Chrome的开发者工具)。
然而,在生产和开发中使用相同的服务器是一个非常好的主意。