bundler vs RVM vs gems vs RubyGems vs gemsets vs system ruby [cerrado]


Soy nuevo en Ruby e intento envolver mi cabeza alrededor de los siguientes conceptos: bundler vs RVM vs gems vs RubyGems vs gemsets vs system rub y estoy confundido.

¿Puede alguien por favor describir una 'mejor práctica' de cómo debo administrar todo esto en una nueva instalación de la última versión de Ubuntu? ¿Qué debo instalar y cómo debo usarlo todo?

Supongo que hacer un sudo apt-get install ruby no es recomendable, pero no estoy seguro. Lo intenté en mi sistema además de ' todos los otros Ruby cosas. Sólo está aumentando mi confusión. No estoy hablando de Rails, sino de gemas Ruby regulares (por ejemplo, Vagrant, Chef, scripts).

Author: Boaz, 2013-03-23

2 answers

De acuerdo con la respuesta anterior, esto es bastante para cubrir, así que considere esta una breve introducción.

Gemas son la forma en que se empaquetan las bibliotecas Ruby. Son para Ruby lo que los frascos son para Java. Dentro de un archivo gem, se encuentra el código Ruby (.archivos rb), pero también pruebas, y un archivo especial que da información sobre la gema en sí, como su nombre, dependencias y versión (gemspec ). Cualquier proyecto Ruby puede definir las gemas que necesita a través de un Gemfile que solo necesita declarar dependencias. Rubygems es el nombre del gestor de paquetes - la herramienta utilizada para instalar los paquetes (mientras que las gemas son los propios paquetes). Rubygems es ahora parte de Ruby.

Bundler es lo que hace la gestión de gemas soportable. Basado en tu Gemfile, una simple llamada a bundler usando bundle install descargará e instalará todas las gemas necesarias. Usando el comando gem estándar, tendría que instalar cada uno de ellos manualmente, usando gem install <gem_name>. Bundler no es parte de Ruby (es en sí mismo empaquetado como una gema), pero es un "estándar de facto" para la mayoría de las aplicaciones (no encontrará mucha gente que no lo use, y no hay buenas razones para no usarlo, en realidad).

RVM es una herramienta que le permite instalar múltiples versiones de Ruby en una máquina, alternando entre ellas cuando sea necesario. Esto se puede usar para instalar un Ruby 1.8 y 1.9, o incluso un " MRI " (Ruby de Matz, la implementación predeterminada) y alternativas (como JRuby o Rubinius). Tenga en cuenta que RVM no está solo en este campo, vea por ejemplo rbenv.

A conjunto de gemas en RVM es un conjunto de gemas específicas para un contexto dado, típicamente un proyecto. Esto es útil si, por ejemplo, está desarrollando diferentes aplicaciones, cada una con sus propios conjuntos de gemas, y desea mantenerlos separados.

Sistema Ruby es, cuando se utiliza RVM, la versión de Ruby instalada en la máquina (es decir, no a través de RVM).

Si usted está empezando, gemas y bundler son de su interés. Puedes dejar de lado RVM y gemsets por ahora.

 139
Author: Martin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-05 14:37:06

Estás pidiendo más información en una pregunta de la que está en el ámbito del Desbordamiento de pila. Para cubrirlo todo se necesitaría un libro.

En Ubuntu es fácil instalar y eliminar gemas a la versión "system" de Ruby, así que acostúmbrate a instalar y eliminar gemas regulares a través de sudo. (En Mac OS daría diferentes consejos porque Apple bundles Ruby para su propio uso y no es una gran idea meterse con él.) Entonces, cuando tienes una idea de cómo funciona toda la idea de la gema, y sabes que quieres varias versiones de Ruby en su sistema, pruebe " rbenv" o " RVM" e instale una o dos versiones en su sandbox.

Linux hace que sea fácil agregar/eliminar Ruby a través de una distribución, pero estamos limitados a las versiones que los mantenedores de la distribución han empaquetado, por lo que generalmente instalo desde el código fuente. Pero, eso es un dolor al administrar varias versiones de Ruby para sistemas de desarrollo, prueba y producción, por lo que se inventaron rbenv y RVM handle manejan lo sucio detalle que nos permite concentrarnos en la programación.

He usado ambos rbenv y RVM, y he estado usando rbenv durante los últimos seis meses más o menos, con buenos resultados. Es menos complicado que el RVM que me gusta. En cualquier caso, hacen que sea fácil tener diferentes versiones instaladas, con conjuntos separados de gemas. Puede tener diferentes versiones de Ruby abiertas en diferentes ventanas de terminales si lo desea, por lo que es fácil probar la compatibilidad.

Regla uno cuando la depuración es haga cambios uno a la vez, lo cual es cierto para aprender a programar o aprender un nuevo idioma. No te distraigas, solo hazlo simple.

 1
Author: the Tin Man,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-23 12:10:28