RVM est idéal pour développer sur votre machine locale. Mais est-ce sûr sur une machine de production?
Réponses
Trop de publicités?Depuis RVM est juste une façon élégante de téléchargement, d'isoler et de commutation entre les Rubis d'implémentations, je dirais que c'est comme prêt pour la production en tant que quel que soit le rubis de la mise en œuvre, vous êtes en train de courir avec.
Essentiellement, tous les RVM n'est point votre chemin à un Rubis de mise en œuvre. C'est exactement ce qui se passe lorsque vous utilisez votre *nix distribution Ruby mise en œuvre. La seule vraie différence, c'est que votre chemin sera ré-écrite, de sorte que lorsque vous exécutez ruby -v
il sera exécuté un rubis à partir de votre actuelle de l'utilisateur .rvm répertoire au lieu d'un système mondial de répertoire comme /usr/local/bin.
J'irais même plus loin et dire que l'utilisation de RVM est une meilleure solution que d'utiliser ce qui obtient généralement installé dans un *nix distribution car il est facile de sandbox spécifiques ruby mise en œuvre sur une base par utilisateur. RVM, il est également possible de tenter de commutation rubis (c'est à dire; à partir de 1.8.7 pour 1.9.2) sur votre application tout en gardant une solide stratégie de démantèlement en place si quelque chose ne fonctionne pas tout à fait droit. Il rend également plus facile de garder les anciennes applications en cours d'exécution sur une version de Ruby, tandis que la commutation de nouvelles applications à des versions plus récentes.
Je suis en désaccord, surtout si vous utilisez tout type de processus de production automatisé (puppet, chef, brouillard, etc) et vous avez plus d'une ou deux machines.
Nous avons eu des problèmes où la version X de RVM travaillé dans une manière complètement différente de la version Y de RVM (par défaut différente de Rubygems versions, différentes par défaut sertie configs, complet changeup de la façon dont l'échelle du système, installer des œuvres), la rupture de notre processus de dimensionnement automatique.
Pas un problème si vous êtes en développement et à portée de main pour régler des éléments, un tueur si vous avez une sans surveillance script / puppet installer. Nous avons travaillé autour de ces questions par le verrouillage d'un particulier RVM version, mais je me souviens avoir une conversation avec Wayne où il déconseille cette. Si nous avons gardé à l'aide de RVM en prod, on allait paquet en une série d' .debs (un pour l'installer, un pour chaque Ruby).
La façon dont .rvmrc invites par défaut et ne peuvent être redéfinies dans le répertoire personnel ~/.rvmrc (et non pas à l'échelle du système) était également inutile.
En fait, j'aime la façon que RVM va changer et faire les choses de cette façon dans le développement - rien ne suce plus que d'être freinée par des raisons de compatibilité descendante. Toutefois, cette approche nous a coûté un peu de temps (et tiré des poils) dans la production/mise en scène/uat/test.
RVM est apparemment raisonnable outil de production
Vous savez, une fois, j'ai fait une similaire rvm est un outil de développement de commentaire et a été informé que rvm était à l'origine un outil de production.
Donc, RVM fera de votre environnement de production plus complexes, ce qui est mauvais, mais c'est plus isolé et compartimenté, ce que la langue des gens appellent modulaire, et c'est bon.
En fin de compte, aussi longtemps que vous testez vos déploiements, je ne vois pas comment une configuration statique de toute nature qui pourraient être, par elle-même, "dangereux".
Tout dépend de la façon dont vous installez RVM, mono-utilisateur ou multi-utilisateur. l'installation du système RVM à l'échelle peut provoquer de nombreux désordres entiers entre différents rubis. Mieux vaut opter pour un utilisateur unique, moins que RVM fait un bon travail pour ce qu'il est censé faire.