我试图设置一个新的服务器来托管Rails应用程序,并希望干净安装所有组件,所以我决定使用rvm + bundler。这是我第一次设置Rails服务器。
之前我使用过捆绑式应用程序,我了解它如何管理应用程序的依赖...但是因为我正在安装Passenger,因为这是托管环境的依赖性,我需要做一个'宝石安装乘客'盒子本身而不是捆绑这种依赖,对吧?或者我应该将乘客放在应用程序的Gemfile中吗?
答案 0 :(得分:5)
应用程序本身无需安装乘客(独角兽,webrick,杂种,薄等),因此乘客不应该真正进入Gemfile。在这种情况下,将乘客单独安装为宝石将是正确的选择。
将Gemfile视为应用程序正在使用的gem的列表。 Passenger正在使用您的应用程序向用户提供数据,而不是使用它的应用程序。在未来,您可以考虑使用其他应用程序服务器,您不必更改应用程序的任何部分,甚至是Gemfile,以进行更改。
但是,如果您的应用程序实际上是在内部使用乘客特定功能或乘客宝石的一部分,那么您应该包括它。例如,如果您使用的是乘客声明的类,那么您将依赖它,并将其包含在您的Gemfile中。
答案 1 :(得分:2)
您应该阅读RVM使用Passenger with RVM的指南。
简而言之,由于您的Web服务器一次只能使用一个版本的Ruby和一个版本的Passenger,因此您只需要安装一次Passenger,但如果为各个gemsets安装它也不应该受到影响(因此在你的Gemfile中)。 Rails也不需要装载乘客(即require 'passenger'
),所以这也不是问题。
(就个人而言,我更喜欢在服务器上使用bundle install --deployment
,在本地使用RVM。)