Por qué debería usar RVM

Una vez que seas adicto al desarrollo de Ruby, querrás experimentar con diferentes versiones de Ruby. A primera vista, podrías pensar que es algo difícil. RVM hace de esto una brisa absoluta. En este tutorial, voy a ponerlo en marcha con RVM.


0 - ¿Qué es RVM??

Sin RVM, es bastante difícil tener más de una versión de Ruby en tu computadora.

RVM significa Ruby enVhierro METROanager Aquí está la idea. Como desarrollador de Ruby, es posible que te encuentres en situaciones en las que necesitarías usar varias versiones de Ruby. Por ejemplo, comenzaste con Ruby 1.8.6, pero ahora quieres experimentar con 1.9.2. O, normalmente trabaja con la rama 1.9, pero desea contribuir a un proyecto de código abierto que todavía está en la rama 1.8.

Sin RVM, es bastante difícil tener más de una versión de Ruby en su computadora. O, ¿qué pasa si quieres probar uno de los intérpretes alternativos de Ruby, como Rubinius o JRuby? ¿Cómo puede sacar uno para dar una vuelta sin renunciar a su instalación de MRI fiel? Aquí es donde RVM interviene. Es básicamente un marco que maneja múltiples instalaciones de Ruby para ti, y te facilita el cambio entre ellas..

Dos advertencias se aplican hoy:

  1. Debe estar bastante familiarizado con la línea de comandos.

  2. Deberías estar en un sistema Unix. Esto significa que probablemente estés ejecutando Mac OS X o alguna versión de Linux. Por mucho que quisiera que RVM estuviera disponible en Windows, no lo está. Si estás en Windows, puedes probar Pik; Entiendo que es similar, pero aún no he tenido la oportunidad de usarlo.


1 - ¿Cómo instalo RVM??

Instalar RVM es un poco incómodo. Primero, necesitas tener instalado Git. Luego, descarga un script y lo ejecuta para realizar la instalación. El sitio RVM recomienda hacerlo de esta manera:

golpetazo < <(curl -s https://rvm.beginrescueend.com/install/rvm)

Incluso si está bastante cómodo con la línea de comando, probablemente se pausará cuando vea esto. Es más fácil de leer al revés: estamos usando rizo para descargar el script al que apunta la URL; la -s comando permite rizo Sepa que desea descargar el script en silencio (sin ningún resultado). Este es el script que instala RVM..

Luego, para ejecutar esta secuencia de comandos automáticamente, estamos utilizando el signo menos de doble para pasar la secuencia de comandos al comando en el lado izquierdo del operador. En nuestro caso, eso es. golpetazo. Es posible que sepa bash como shell, o el terminal que probablemente esté ejecutando ahora mismo. Esto ejecuta el script en un shell bash (que se ejecuta dentro del shell bash en su terminal).

El comando anterior descarga y ejecuta el script, que instalará RVM.

Pero todavía no hemos terminado. Para asegurarse de que RVM se ejecuta correctamente, debe agregar el siguiente fragmento a su ~ / .bash_profile o ~ / .bashrc expediente.

[[-s "$ HOME / .rvm / scripts / rvm"]] && fuente "$ HOME / .rvm / scripts / rvm" # Esto carga RVM en una sesión de shell.

Como se ve en el comentario, "esto carga RVM en una sesión de shell". Específicamente, si tienes curiosidad, esto carga el rvm comando como una función de shell (como las que podría agregar a su ~ / .bash_profile archivo), en lugar de como un binario (un programa que se ejecuta en el shell, como ls o rubí).

Pero recuerde, RVM es una biblioteca de rápido crecimiento, y es posible que el método de instalación cambie. Para conocer las formas más actualizadas de instalar RVM, consulte la documentación..

Ahora que tenemos instalado RVM, usémoslo!


2 - ¿Cómo uso RVM??

Las dos grandes características que ofrece RVM son Rubies y Gemsets. Veamos cada uno de estos a su vez, y luego veamos algunas otras personalizaciones..

Rubíes

Los rubíes son la intención principal (aunque no exclusiva) de RVM; recuerda lo que significa RVM? Ruby enVhierro METROanager Entonces, instalemos unos rubíes.!

Si ha estado usando Ruby por un tiempo, sabrá que hay varias implementaciones de Ruby diferentes para elegir. Puede ver cuáles están disponibles con RVM usando este comando:

lista de rvm conocida

Por cierto, eche un vistazo a esta sintaxis; la mayoría de los comandos RVM que usarás son así: rvm, una categoría y un comando para esa categoría. Como era de esperar, esto enumerará todas las implementaciones de Ruby (y las versiones de implementaciones) que puede instalar.

Así que vamos a elegir una versión e instalarlo. Sin embargo, hay algo que deberíamos hacer primero. Es posible que exista alguna dependencia que requiera su plataforma antes de que pueda instalar el rubí de su elección. Increíblemente, RVM también tiene tu espalda aquí: ejecuta el comando notas rvm Para ver qué dependencias debes instalar. Enumera los diferentes rubíes que puedes instalar, y lo que debes instalar primero para cada uno de ellos..

Generalmente uso exclusivamente Ruby 1.9.2, así que instalemos eso. Para instalar un Ruby, usa el comando rvm instalar, seguido de la implementación y la versión que desee, tal como se indica con lista de rvm conocida.

rvm install ruby-1.9.2-p180

Puede instalar tantas versiones de Ruby como desee con solo usar este comando.

Este comando tardará unos minutos en ejecutarse, pero una vez que esté listo, tendrás la versión de ruby ​​que seleccionaste instalada en tu computadora.

Puede instalar tantas versiones de Ruby como desee con este comando. Pero, ahora que tiene más de una versión instalada, ¿cómo las usa o cambia entre ellas? Además, ¿qué pasa con la implementación de Ruby que probablemente vino con tu computadora??

Es bastante simple Para usar un Ruby dado, usa este comando:

uso rvm  # en uso rvm abstracto 1.9.2-p180

Si eso es todo lo que hace, tendrá que escribir eso cada vez que abra un terminal; de lo contrario, irá por defecto al Ruby incorporado. Para evitar esto, añade la bandera. --defecto. Esto también le brinda un acceso directo para volver a su Ruby predeterminado en cualquier momento; Si has cambiado a otro Ruby, simplemente escribe rvm por defecto para volver atrás.

Para asegurarse de que está utilizando la versión correcta, escriba ruby -v; Deberías ver la versión de Ruby que usa solo seleccionada..

Si estás usando unos pocos rubíes diferentes, querrás hacer un seguimiento de lo que tienes; por eso tienes el lista de rvm mando. Aquí está mi inventario actual:

 ruby-1.8.7-p302 [x86_64] ruby-1.8.7-p334 [x86_64] ruby-1.9.2-p0 [x86_64] ruby-1.9.2-p180 [x86_64]

Como puedes imaginar, la => al lado del último significa que ese es el que estoy usando actualmente.

Si quieres eliminar un Ruby, es igual de fácil. Utilizar rvm eliminar Para deshacerse de todo lo relacionado con ese Ruby. Si crees que quizás quieras volver a instalar Ruby en el futuro, solo usa rvm desinstalar; Esto deja el código fuente y otras piezas en su lugar..

Gemas

Mientras que los Rubíes múltiples son geniales, los gemsets, al menos para mí, están donde está. Básicamente, un conjunto de gemas es un conjunto de gemas que usas exclusivamente (o casi exclusivamente). Esto es genial en dos casos:

  1. Deseas usar diferentes versiones de una gema dada, probablemente con diferentes versiones de Ruby.
  2. ¿Quieres? Sandbox? tus gemas, por lo que solo ciertas gemas están disponibles en un momento dado.

Veamos como funciona esto..

rvm gemset crear 

Por supuesto, eres libre de nombrar tu gemset lo que quieras. Para ver todos tus gemsets, utiliza lista de gemset rvm. Si haces esto ahora, verás dos conjuntos de gemas (asumiendo que acabas de ejecutar el comando anterior). Uno será (o como lo llames) y global. los global Gemset es especial; Como probablemente puedas adivinar, las gemas en el global Gemset está disponible sin importar qué gemset estés usando.

Puedes ver el beneficio de esto: hay algunas gemas que siempre quieres, sin importar lo que estés haciendo. Realmente, hay otro gemset, el gemset predeterminado, que no está en la lista y no tiene nombre. Si no está utilizando un conjunto de gemas específico, tiene las gemas en el conjunto de gemas predeterminado (y, por supuesto, el conjunto de gemas global) disponible.

Puedes ver tu conjunto de conjuntos de gemas usando el comando lista de gemset rvm; como antes, => marca el conjunto de gemas que estás utilizando actualmente. Si no se marca ningún gemset, está utilizando el gemset predeterminado.

Nada podría ser más fácil que cambiar gemsets:

uso rvm gemset 

Una vez que estés usando un conjunto de gemas dado, puedes instalar gemas con gema instala gema-nombre. Hay una nota importante aquí. No usar sudo al instalar eso; Al hacerlo, se ignora por completo que RVM ejecuta el programa aquí y lo instala en todo el sistema, fuera del entorno RVM. Entonces, haz solo gema instala gema-nombre.

Como se mencionó, los gemsets predeterminados y globales se crean cuando instala un nuevo Ruby. Si tiene ciertas gemas que desea instalar de forma predeterminada al instalar un nuevo Ruby, agréguelas al archivo de gemas apropiado. En ~ / .rvm / gemsets /, Encontrarás dos archivos: default.gems y global.gems. Solo enumera las gemas por nombre, una de cada línea. Estas gemas se instalarán en el conjunto de gemas apropiado cuando instales un nuevo Ruby.

Estos archivos de gemas también son una excelente manera de almacenar una lista de gemas. Puedes exportar un gemset con exportación de gemset rvm; esto guardará una lista de las gemas en el gemset actual como default.gems en cualquier carpeta en la que se encuentre actualmente. Si desea darle a este archivo un nombre específico, simplemente agréguelo al final de ese comando. Luego, puede importar esa lista de gemas en un Ruby diferente o incluso en una computadora diferente (piense en verificarlo en el control de código fuente) con el rvm gemset importar gema-lista-nombre-archivo.

Una cosa más sobre gemsets: puedes usarlos en tu uso rvm comandos Hacer esto:

 uso rvm @

.Archivos rmvrc

.Los archivos rvmrc son realmente geniales. Considérenlos el panel de configuración de RVM. Puedes tener un archivo .rvmrc en tres lugares diferentes: / etc / rvmrc establece opciones para todo el sistema; ~ / .rvmrc establece opciones para el usuario actual; una .rvmrc archivo en un directorio específico personaliza las cosas para ese proyecto.

El global y el usuario. .rvmrc Los archivos son principalmente opciones de compilación para instalar nuevos Rubies. Sin embargo, el proyecto específico .rvmrc los archivos son los divertidos.

Así es como lo haces: cuando inicias un nuevo proyecto, podrás crear un .rvmrc archivo en ese directorio. Digamos que tienes una aplicación de rieles que necesita Ruby 1.8.6 para ejecutarse; tienes Ruby 1.9.2 como predeterminado y no debes tener que acordarte de cambiar de Rubies cuando estés trabajando en ese proyecto. Entonces, escribe este comando:

 rvm --rvmrc --create 1.8.6-p334

Esto creará un gran comentario. .rmvrc archivo que cambiará su entorno de Ruby a la perfección cuando cambie a ese directorio. Asegúrese de leer los comentarios que se encuentran allí para ver qué se está haciendo exactamente para cambiar de entorno y qué puede hacer con .rmvrc archivos.

Se pone aún mejor con gemsets. Uso Ruby 1.9.2 para todos mis proyectos, pero me gusta tener un conjunto de gemas diferente para cada proyecto. Entonces, si tengo un proyecto que se llama superproj, Puedo hacer esto:

 rvm --rvmrc --create 1.9.2@superproj

Simplemente agregue un signo en el nombre de Ruby y sígalo con el nombre de su conjunto de gemas. Como se esperaba, esto cargará sin problemas las gemas correctas para ese proyecto. Si este gemset aún no se ha creado, RVM también lo hará por usted..

Personalización rápida

Es posible que desees averiguar qué ruby ​​y gemset estás usando actualmente. Hay dos formas de hacer esto: en primer lugar, puede usar el comando información rvm. Esto le dirá qué ruby ​​y gemset está usando (entre muchas otras cosas).

Si desea algo más permanente, puede poner el nombre directamente en su indicador. Para hacer esto, agrega una línea a tu ~ / .bash_profile. El ejemplo que da la documentación de RVM es el siguiente:

 PS1 = "\ $ (~ / .rvm / bin / rvm-prompt) $ PS1"

Lo que esto hace es ejecutar el script ~ / .rvm / bin / rvm-prompt y coloque la salida en su solicitud (entonces, agrega cualquier cosa que su solicitud esté actualmente al final). Esto colocará el nombre de ruby ​​y el nombre de gemset al comienzo de su solicitud. Aún mejor, si está familiarizado con la personalización de su solicitud, consulte la documentación para conocer más formas de personalizar esa salida..


Conclusión: diviértete con eso!

Espero haber demostrado lo suficientemente bien que realmente no hay razón para no usar RVM si estás en una caja de Unix. Personalmente, todavía no he encontrado que sea necesario usar más de un intérprete / versión de Ruby, pero encuentro los conjuntos de gemas y proyectos específicos .rvmrc archivos para ser increíblemente útil.

Pero hay más que aprender sobre RVM de lo que he mostrado aquí. Para más educación, asegúrese de revisar la excelente documentación. Y hazme saber en los comentarios si tienes alguna duda..