Montar un entorno de trabajo para Ruby.

Para montar un entorno de trabajo de Ruby necesitamos tener instalado curl

$ sudo apt-get update
$ sudo apt-get install curl -y

RVM

RVM es una herramienta de linea de comando que te permite instalar fácilmente, gestionar y trabajar con múltiples entornos de ruby desde intérpretes a sets de gemas. Es importante NO instalar RVM como sudo.

$ \curl -sSL https://get.rvm.io | bash -s stable --ruby

Si os aparece este mensaje:

GPG signature verification failed for '/home/vagrant/.rvm/archives/rvm-1.26.11.tgz' - 'https://github.com/rvm/rvm/releases/download/1.26.11/1.26.11.tar.gz.asc'!
try downloading the signatures:

gpg --keyserver hkp://keys.gnupg.net --recv-keys xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

or if it fails:

command curl -sSL https://rvm.io/mpapis.asc | gpg --import -

Copia y pega en la consola :

$ gpg --keyserver hkp://keys.gnupg.net --recv-keys xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Volvemos a cargar la configuraciónd de rvm:

$ source /home/vagrant/.rvm/scripts/rvm

Vamos al directorio donde tenemos el proyecto de Ruby y ejecutamos el siguiente comando:

$ rvm gemset create nombre_del_proyecto

La consola devolverá algo como esto:

ruby-2.2.1 - #gemset created /home/vagrant/.rvm/gems/ruby-2.2.1@nombre_del_proyecto
ruby-2.2.1 - #generating nombre_del_proyecto wrappers........

De esta manera, gracias al gemset podemos tener diferentes versiones de ruby, en cada proyecto. Sería como una forma de tener diferentes versiones de php en la misma máquina, encapsulando cada versión en función del proyecto.

En este enlace se puede ver algunos de los comandos más usados de rvm.

Bundler

Una vez instalado RVM toca isntalar Bundler. Bundler es una herramienta eficaz, la forma sencilla de entenderlo sería decir que es la versión de Ruby similar al composer de php.

Bundler proporciona un entorno consistente para proyectos de Ruby mediante el seguimiento y la instalación de las gemas exactas y versiones que se necesitan.

Bundler es una salida del infierno de dependencias, y asegura que las gemas que necesita están presentes en el desarrollo, la puesta en escena, y la producción. A partir del trabajo de un proyecto es tan simple como paquete de instalación.

Para instalar bundler ejecutamos:

$ gem install bundler

Una vez instalada la gema bundler hay que ir a la raíz del proyecto de Ruby y creamos un archivo llamado Gemfile, para crear el archivo Gemfile ejecutamos $ bundle init , y generará un archivo Gemfile.

El arcivo Gemfile que pongo a continuación es un ejemplo de un proyecto con Sinatra.

source 'https://rubygems.org'

gem 'sinatra'
gem 'pry'
gem 'sinatra-assetpack'

Cuando se ejecute bundle installbundle descarga las gemas necesarias para el proyecto, las instala en la máquina y genera un archivo llamado Gemfile.lock

GEM
remote: https://rubygems.org/
specs:
coderay (1.1.0)
jsmin (1.0.1)
method_source (0.8.2)
pry (0.10.3)
coderay (~> 1.1.0)
method_source (~> 0.8.1)
slop (~> 3.4)
rack (1.6.4)
rack-protection (1.5.3)
rack
rack-test (0.6.3)
rack (>= 1.0)
sinatra (1.4.6)
rack (~> 1.4)
rack-protection (~> 1.4)
tilt (>= 1.3, < 3)
sinatra-assetpack (0.3.3)
jsmin
rack-test
sinatra
tilt (>= 1.3.0, < 2.0)
slop (3.6.0)
tilt (1.4.1)

PLATFORMS
ruby

DEPENDENCIES
pry
sinatra
sinatra-assetpack

Con esto ya tenemos lo necesario para trabajar en nuestro proyecto, en caso de necesitar nuevas gemas, se escribe la gema que se necesita en el Gemfile y se vuelve a ejecutar el bundle para que se se instale en el proyecto.

Oskar