ruby - create - rbenv
bundler vs RVM vs gemas vs RubyGems vs gemsets vs sistema ruby (2)
Soy nuevo en Ruby y trato de entender los siguientes conceptos: bundler vs RVM vs gems vs RubyGems vs gemsets vs system frot y estoy confundido.
¿Alguien puede describir una ''mejor práctica'' de cómo debería gestionar todo esto en una nueva instalación de la última versión de Ubuntu? ¿Qué debería instalar y cómo debería usarlo todo?
Supongo que hacer un sudo apt-get install ruby
no es recomendable, pero no estoy seguro. Lo probé en mi sistema además de ''todas las otras cosas de Ruby''. Simplemente está aumentando mi confusión. No estoy hablando de Rails, sino de las gemas regulares de Ruby (por ejemplo, Vagrant, Chef, scripts).
Está solicitando más información en una pregunta que la que está dentro del alcance de . Para cubrirlo todo tomaría un libro.
En Ubuntu es fácil de instalar y quitar gemas a la versión de "sistema" 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 combina Ruby para su propio uso y no es una gran idea meterse con eso.) Luego, cuando tengas una idea de cómo funciona la idea de la gema completa, y sabes que quieres múltiples Versiones de Ruby en tu sistema, prueba " rbenv " o " RVM " e instala una o dos versiones en tu 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 normalmente instalo desde la fuente. Pero eso es un problema cuando manejamos varias versiones de Ruby para sistemas de desarrollo, prueba y producción, razón por la rbenv se inventaron rbenv y RVM : manejan los detalles sucios permitiéndonos concentrarnos en la programación.
He usado tanto rbenv como RVM , y he estado usando rbenv durante los últimos seis meses, con buenos resultados. Es menos complicado que RVM que me gusta. En cualquier caso, hacen que sea más fácil tener diferentes versiones instaladas, con conjuntos separados de gemas. Si lo desea, puede tener diferentes versiones de Ruby abiertas en diferentes ventanas de terminal, lo que facilita la prueba de compatibilidad.
Regla uno cuando la depuración consiste en hacer cambios de uno en uno, lo que es cierto para aprender a programar o aprender un nuevo idioma. No te distraigas, solo mantenlo simple.
Según la respuesta anterior, esto es bastante para cubrir, así que considere esta una breve introducción.
gems son la forma en que se empaquetan las bibliotecas de Ruby. Son para Ruby lo que son los jar a Java. Dentro de un archivo gema, se encuentra el código de Ruby (archivos .rb), pero también las pruebas, y un archivo especial que proporciona información sobre la gema en sí, como su nombre, dependencias y versión ( gemspec ). Cualquier proyecto de Ruby puede definir las gemas que necesita a través de un Gemfile que solo necesita declarar dependencias. Rubygems es el nombre del administrador de paquetes: la herramienta utilizada para instalar los paquetes (mientras que las gemas son los paquetes mismos). Rubygems ahora es parte de Ruby.
Bundler es lo que hace que la gestión de gemas sea soportable. Basado en su Gemfile, una simple llamada a bundler utilizando bundle install descargará e instalará todas las gemas requeridas. Usando el comando gem estándar, tendrías que instalar cada uno de ellos manualmente, usando gem install <gem_name>
. Bundler no es parte de Ruby (está empaquetado como una joya ), pero es un "estándar de facto" para la mayoría de las aplicaciones (no encontrarás muchas personas que no lo usen, 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 una "MRI" (Matz''s Ruby, la implementación predeterminada) y alternativas (como JRuby o Rubinius). Tenga en cuenta que RVM no está solo en este campo, consulte por ejemplo rbenv .
Un gemset 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 mantenerlas separadas.
sistema Ruby es, al usar RVM, la versión de Ruby instalada en la máquina (es decir, no a través de RVM).
Si recién está empezando, las gemas y el paquete son de su interés. Puedes dejar de lado RVM y gemas por ahora.