2011-03-08 3 views
4

En essayant de configurer un nouveau serveur pour héberger une application Rails et que vous voulez une installation propre de tous les composants, j'ai décidé d'utiliser rvm + bundler. C'est la première fois que je mets en place un serveur Rails. J'ai utilisé bundler avec une application avant et je comprends comment il gère les dépendances de l'application ... mais depuis que j'installe Passenger et puisque c'est la dépendance de l'environnement d'hébergement, je dois faire un 'gem install passenger' sur la boîte elle-même au lieu de regrouper cette dépendance, non? Ou devrais-je mettre un passager dans le Gemfile de l'application?Dois-je installer un passager en tant que joyau régulier même si mon application utilise le bundler?

Répondre

5

L'application elle-même fonctionnerait sans avoir installé de passager (licorne, webrick, mongrel, thin, etc.), donc le passager ne devrait pas vraiment être dans le Gemfile. L'installation d'un passager en tant que gemme séparément serait le bon choix dans ce cas.

Regardez le Gemfile comme une liste des gems que votre application utilise. Passenger utilise votre application pour fournir des données à l'utilisateur, plutôt que votre application l'utilisant. Au cours de la route, vous pouvez envisager d'utiliser un autre serveur d'applications, et vous ne devriez pas avoir à modifier une partie de votre application, même le Gemfile, pour apporter cette modification. Toutefois, si votre application utilise actuellement des fonctions spécifiques au passager ou des portions de la gemme du passager en interne, vous devez l'inclure. Par exemple, si vous utilisiez une classe déclarée dans un passager, vous en dépendriez et vous devriez l'inclure dans votre Gemfile.

+1

Non. Même si vous utilisez les fonctions spécifiques aux passagers de Phusion, vous ne devez toujours pas inclure «passager» dans Gemfile. – Hongli

2

Vous devriez lire le guide du RVM sur l'utilisation de Passenger with RVM. En résumé, comme votre serveur Web ne peut utiliser qu'une seule version de Ruby et une version de Passenger à la fois, il vous suffit d'installer Passenger une seule fois, mais cela ne devrait pas poser de problème s'il est installé pour des gemsets individuels (et ainsi dans votre Gemfile). Rails n'a pas non plus besoin de charger le passager lui-même (c'est-à-dire require 'passenger'), donc ce n'est pas un problème non plus.

(Personnellement, je préfère utiliser bundle install --deployment sur le serveur, et RVM localement).

Questions connexes