L'équivalent Ruby de virtualenv ?
-
20-08-2019 - |
Question
Existe-t-il quelque chose de similaire à l'utilitaire Python environnement virtuel?
Fondamentalement, il vous permet d'installer des packages Python dans un environnement sandbox, donc easy_install django
ne va pas dans le répertoire des packages de site à l'échelle de votre système, il ira dans le répertoire créé par virtualenv.
Par exemple:
$ virtualenv test
New python executable in test/bin/python
Installing setuptools...cd .........done.
$ cd test/
$ source bin/activate
(test)$ easy_install tvnamer
Searching for tvnamer
Best match: tvnamer 0.5.1
Processing tvnamer-0.5.1-py2.5.egg
Adding tvnamer 0.5.1 to easy-install.pth file
Installing tvnamer script to /Users/dbr/test/bin
Using /Library/Python/2.5/site-packages/tvnamer-0.5.1-py2.5.egg
Processing dependencies for tvnamer
Finished processing dependencies for tvnamer
(test)$ which tvnamer
/Users/dbr/test/bin/tvnamer
Existe-t-il quelque chose comme ça pour RubyGems ?
La solution
RVM fonctionne plus près du fonctionnement de virtualenv car il vous permet de mettre en sandbox différentes versions de Ruby et leurs gemmes, etc.
Autres conseils
Ni sandbox, RVM, ni rbenv ne gèrent les versions des dépendances de gem de votre application. L’outil correspondant est bundler .
- utilisez un Gemfile comme déclaration de dépendance de votre application
- utiliser
bundle install
pour installer des versions explicites de ces dépendances dans un emplacement isolé - utilisez
bundle exec
pour exécuter votre application
Personne ne semble avoir mentionné rbenv .
Je pense que vous aimerez le le bac à sable .
Si vous n'avez besoin d'installer que des gems en tant que non-root, essayez de définir la variable d'environnement GEM_HOME
. Il suffit ensuite de lancer gem
.
Par exemple:
$ export GEM_HOME=$HOME/local/gems
$ gem install rhc
Je mentionnerai comment je fais cela avec Bundler (que j'utilise avec RVM - RVM pour gérer les rubis et un ensemble de gemmes globales par défaut, Bundler pour gérer les gemmes spécifiques au projet)
bundler install --binstubs --path vendor
L'exécution de cette commande à la racine d'un projet installera les gems répertoriés dans votre Gemfile, placera les bibliothèques dans ./vendor
et tous les exécutables dans ./bin
et tous les require
s (si vous utilisez bundle console
ou le Bundler a besoin) référencera ces exes et libs.
Fonctionne pour moi.
je recommande direv.Il s'agit d'un sélecteur d'environnement pour le shell.
Avant chaque invite, il vérifie l'existence d'un fichier ".envrc" dans les répertoires actuel et parent.Si le fichier existe (et autorisé), il est chargé dans un sous-shell bash et toutes les variables exportées sont ensuite capturées par direnv puis mises à disposition du shell actuel.
Voici comment utiliser direnv avec Ruby-Install
+ installation Ruby
Ajoutez ceci au ~/.direnvrc
use_ruby() {
local ruby_root=$HOME/.rubies/$1
load_prefix "$ruby_root"
layout_ruby
}
Installez Ruby-Install (brew install ruby-install
) et installez un tas de rubis.
ruby-install ruby 1.9.3
ruby-install ruby 2.0.0
ruby-install ruby 2.2.0
Et puis créez quelques liens symboliques pour plus de commodité :
ln -s .rubies/1.9 ruby-1.9.3-p*
ln -s .rubies/2.0 ruby-2.0.0
ln -s .rubies/2.2 ruby-2.2.0
Et enfin dans n'importe quel projet .envrc
:
use ruby 2.0
Cela mettra toutes les pierres précieuses sous la responsabilité du projet. .direnv/ruby
répertoire (facilite l’ouverture des gemmes).bundler placera les binaires du wrapper dans .direnv/bin
(pas plus bundle exec
!).
+ rbenv
Il est également possible d'utiliser rbenv en ajoutant le use rbenv
commande dans n'importe quel .envrc
déposer.Cela activera rbenv qui, à son tour, placera les wrappers Ruby dans le PATH.
Notez qu'il n'est pas nécessaire d'installer rbenv dans le .bashrc ou le .zshrc pour que cela fonctionne.
+ RVM
Voici le .envrc le plus compliqué que j'utilise sur les projets Ruby :
rvm use 1.8.7
layout ruby
PATH_add .direnv/bundler-bin
rvm est utilisé pour sélectionner la version Ruby qui vous convient
Les commandes de mise en page définissent automatiquement certaines des variables d'environnement habituelles.Pour l'instant, seule la disposition Ruby existe.Ce qu'il fait, c'est définir la variable d'environnement GEM_HOME et son répertoire bin sur votre chemin.Parce que cela dépend de la version Ruby, assurez-vous de l'appeler après "rvm".Étant donné que chaque répertoire de mise en page Ruby a son propre GEM_HOME, vous n'avez pas besoin d'utiliser les gemsets de rvm.
PATH_add ajoute et développe le chemin relatif donné.Dans ce cas, j'utilise ceci pour séparer les binstubs du bundler de mes propres scripts bin avec bundle install --binstubs .direnv/bundler-bin
Si vous voulez savoir exactement ce que font ces commandes, pour l’instant :chat direnv stdlib
| moins
Mineshaft est un projet sur lequel je travaille depuis un certain temps et qui poursuit actuellement des travaux de développement. sur.
Il offre la possibilité de créer des environnements virtuels similaires à ceux de virtualenv et d’installer Ruby globalement.