¿Hay algo similar a la utilidad de Python virtualenv ?
Básicamente le permite instalar paquetes de Python en un entorno de espacio aislado, por lo easy_install django
que no va en el directorio de paquetes de sitio de todo el sistema, iría en el directorio creado por virtualenv.
Por ejemplo:
$ 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
¿Hay algo así para RubyGems?
python
ruby
virtualenv
dbr
fuente
fuente
Ni sandbox, RVM ni rbenv administran las versiones de las dependencias de gemas de su aplicación. La herramienta para eso es bundler .
bundle install
para instalar versiones explícitas de estas dependencias en una ubicación aisladabundle exec
para ejecutar su aplicaciónfuente
Nadie parece haber mencionado rbenv .
fuente
Creo que te gustará sandbox .
fuente
$HOME
? ¿Para qué demonios las gemas necesitan eso ? Lo triste es que es lo mejor que he visto para el trabajo. Incluso el paquete por defecto se instala en la ruta ruby del sistema.Mencionaré la forma en que hago esto con Bundler (que uso con RVM - RVM para administrar los rubíes y un conjunto predeterminado de gemas globales, Bundler para manejar gemas específicas del proyecto)
Al ejecutar este comando en la raíz de un proyecto, se instalarán las gemas que figuran en su Gemfile, se colocarán las librerías
./vendor
y todos los ejecutables./bin
y todos losrequire
s (si los usabundle console
o el Bundler lo requiere) harán referencia a estos exes y libs.Funciona para mi.
fuente
vendor.noindex
nombras la ruta que tus búsquedas de Spotlight no estarán llenas de datos indexados de las gemas vendidas.rbenv
, pero esa es otra historia), ya que aísla el conjunto de gemas y la versión rubí. Nada está instalado en todo el sistema y cada proyecto tiene todas sus dependencias bien declaradas. Consejo:bundle config path vendor
no olvides nunca ese argumento.Si solo necesita instalar gemas como no root, intente configurar la
GEM_HOME
variable de entorno. Entonces solo corregem
.Por ejemplo:
fuente
export GEM_HOME=$HOME/.local/gems
GEM_HOME=$HOME/.local
por lo que comparte la misma.bin
carpeta. En ese caso no tenemos que actualizar nuestra$PATH
variable.~/.bashrc
y listo). +1Recomiendo direnv . Es un conmutador de entorno para el shell.
Antes de cada solicitud, verifica la existencia de un archivo ".envrc" en los directorios actual y principal. Si el archivo existe (y está autorizado), se carga en un shell secundario de bash y todas las variables exportadas son capturadas por direnv y luego están disponibles en el shell actual.
Aquí se explica cómo usar direnv con ruby-install
+ ruby-install
Agregue esto a la
~/.direnvrc
Instale ruby-install (
brew install ruby-install
) e instale un montón de rubíes.Y luego crea un par de enlaces simbólicos para mayor comodidad:
Y finalmente en cualquier proyecto
.envrc
:use ruby 2.0
Esto colocará todas las gemas en el
.direnv/ruby
directorio del proyecto (facilita la apertura de gemas). bundler colocará binarios de envoltura.direnv/bin
(¡no másbundle exec
!).+ rbenv
También es posible usar rbenv agregando el
use rbenv
comando en cualquier.envrc
archivo. Esto activará rbenv que a su vez colocará los envoltorios de rubí en la RUTA.Tenga en cuenta que no es necesario instalar rbenv en .bashrc o .zshrc para que esto funcione.
+ RVM
Aquí está el .envrc más complicado que uso en proyectos de ruby:
rvm se usa para seleccionar la versión de rubí adecuada para usted
Los comandos de diseño configuran automáticamente algunas de las variables de entorno habituales. Por ahora solo existe el diseño de rubí. Lo que hace es establecer la variable de entorno GEM_HOME y su directorio bin a su ruta. Debido a que depende de la versión ruby, asegúrese de llamarlo después de "rvm". Dado que cada directorio de diseño de ruby tiene su propio GEM_HOME, no necesita usar los gemas de rvm.
PATH_add antepone y expande la ruta relativa dada. En ese caso, uso esto para segregar los binstubs del paquete de mis propios scripts bin con
bundle install --binstubs .direnv/bundler-bin
Si quiere saber qué hacen exactamente esos comandos, por ahora: cat
direnv stdlib
| Menosfuente
Mineshaft es un proyecto en el que he estado trabajando durante algún tiempo y continúo trabajando en el desarrollo.
Ofrece la capacidad de crear entornos virtuales similares al funcionamiento de virtualenv y también puede instalar Ruby a nivel mundial.
fuente