2011-03-08 51 views
4

我试图设置一个新的服务器来托管一个Rails应用程序,并希望全部安装所有组件,所以我决定使用rvm + bundler。它是我第一次建立一个Rails服务器。即使我的应用使用捆绑软件,我是否需要将乘客安装为常规宝石?

我以前在应用程序中使用过捆绑器,我理解它如何管理应用程序的依赖关系......但是由于我安装了Passenger,并且由于这是托管环境的依赖关系,所以我需要执行“gem install passenger”盒子本身而不是捆绑这种依赖关系,对吧?或者我应该把乘客放在应用程序的Gemfile中?

回答

5

应用程序本身会在没有安装乘客的情况下运行(独角兽,webrick,杂种,瘦身等),因此乘客不应该在Gemfile中。分开安装乘客作为宝石将是在这种情况下的正确选择。

将Gemfile视为您的应用程序正在使用的宝石列表。乘客正在使用您的应用程序向用户提供数据,而不是您的应用程序使用它。顺便说一下,您可能会考虑使用其他应用程序服务器,并且您不必更改应用程序的任何部分,即使是Gemfile,也可以进行更改。

但是,如果您的应用程序实际上在内部使用乘客专用功能或部分乘客宝石,那么您应该包含它。例如,如果您使用的是在乘客中声明的类,那么您将依赖它,并应将其包含在Gemfile中。

+1

不会。即使您使用Phusion乘客专用功能,您仍然不应在Gemfile中包含“乘客”。 – Hongli 2011-03-08 19:37:11

2

您应该阅读RVM的使用指南Passenger with RVM。简而言之,由于您的Web服务器一次只能使用一个版本的Ruby和一个版本的Passenger,因此您只需安装一次Passenger,但如果它安装在单独的Gemset上,也不会受到影响(以及因此在你的Gemfile中)。轨道也不需要载客本身(即require 'passenger'),所以这也不是问题。

(我个人更喜欢在服务器上使用bundle install --deployment,在本地使用RVM)。

相关问题