Existe-t-il quelque chose de similaire à l'utilitaire Python virtualenv ?
Fondamentalement, il vous permet d'installer des packages Python dans un environnement sandbox, donc easy_install django
ne va pas dans votre répertoire site-packages à l'échelle du système, il irait 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
Y a-t-il quelque chose comme ça pour RubyGems?
Ni sandbox, ni RVM, ni rbenv ne gèrent les versions des dépendances gem de votre application. L'outil pour cela est bundler .
bundle install
pour installer des versions explicites de ces dépendances dans un emplacement isolébundle exec
pour exécuter votre applicationla source
Personne ne semble avoir mentionné rbenv .
la source
Je pense que vous aimerez le bac à sable .
la source
$HOME
?! Pourquoi les gemmes ont-elles besoin de ça ? Le plus triste, c'est que c'est la meilleure chose que j'ai vue pour le poste. Même le bundler s'installe par défaut dans le chemin ruby du système.Je vais mentionner la façon dont je fais cela avec Bundler (que j'utilise avec RVM - RVM pour gérer les rubis et un ensemble par défaut de gemmes globales, Bundler pour gérer les gemmes spécifiques au projet)
L'exécution de cette commande à la racine d'un projet installera les gemmes répertoriées à partir de votre Gemfile, insérera les bibliothèques,
./vendor
et tous les exécutables dans./bin
et allrequire
s (si vous utilisezbundle console
ou si le Bundler l'exige) référencera ces ex et bibliothèques.Travaille pour moi.
la source
vendor.noindex
vos recherches Spotlight ne seront pas encombrées de données indexées à partir des gemmes vendues.rbenv
, mais c'est une autre histoire), car il isole le jeu de pierres précieuses et la version rubis. Rien n'est installé à l'échelle du système et chaque projet a toutes ses dépendances bien déclarées. Astuce: utilisezbundle config path vendor
pour ne jamais oublier cet argument.Si vous avez seulement besoin d'installer des gemmes en tant que non-root, essayez de définir la
GEM_HOME
variable d'environnement. Alors courezgem
.Par exemple:
la source
export GEM_HOME=$HOME/.local/gems
GEM_HOME=$HOME/.local
afin de partager le même.bin
dossier. Dans ce cas, nous n'avons pas à mettre à jour notre$PATH
variable.~/.bashrc
et vous avez terminé). +1Je recommande direnv . C'est un sélecteur d'environnement pour le shell.
Avant chaque invite, il vérifie l'existence d'un fichier ".envrc" dans les répertoires courant et parent. Si le fichier existe (et autorisé), il est chargé dans un sous-shell bash et toutes les variables exportées sont alors capturées par direnv puis rendues disponibles le shell actuel.
Voici comment utiliser direnv avec ruby-install
+ ruby-installer
Ajoutez ceci à la
~/.direnvrc
Installez ruby-install (
brew install ruby-install
) et installez un tas de rubis.Et puis créez quelques liens symboliques pour plus de commodité:
Et enfin dans n'importe quel projet
.envrc
:use ruby 2.0
Cela placera toutes les gemmes dans le
.direnv/ruby
répertoire du projet (facilite l'ouverture des gemmes). bundler placera les binaires wrapper.direnv/bin
(pas plusbundle exec
!).+ rbenv
Il est également possible d'utiliser rbenv en ajoutant la
use rbenv
commande dans n'importe quel.envrc
fichier. Cela activera rbenv qui à son tour placera les enveloppes ruby dans le PATH.Notez qu'il n'est pas nécessaire d'installer rbenv dans le .bashrc ou .zshrc pour que cela fonctionne.
+ RVM
Voici le .envrc le plus compliqué que j'utilise sur les projets ruby:
rvm est utilisé pour sélectionner la bonne version de ruby pour vous
Les commandes de mise en page définissent automatiquement certaines des variables d'environnement habituelles. Pour l'instant, seule la mise en page ruby existe. Ce qu'il fait, c'est définir la variable d'environnement GEM_HOME et son répertoire bin sur votre chemin. Comme cela dépend de la version ruby, assurez-vous de l'appeler après "rvm". Puisque 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 ce que font exactement ces commandes, pour l'instant: cat
direnv stdlib
| Moinsla source
Mineshaft est un projet sur lequel je travaille depuis un certain temps et sur lequel je continue le travail de développement.
Il offre la possibilité à la fois de créer des environnements virtuels similaires au fonctionnement de virtualenv et peut également installer Ruby à l'échelle mondiale.
la source