Ruby

De Ardemans Wiki
Saltar a: navegación, buscar

Como siempre, aclaro que estoy son algunos apuntes que voy cogiendo mientras voy leyendo documentación y que puede haber muchas cosas que falten o malentendidos, así que aconsejo si alguien lo está leyendo que busque más información.

Manejadores de versiones

Se puede instalar Ruby desde paquetería, o se puede incluso compilar una versión especifica, pero por lo que he visto por ahí la gente prefiere utilizar scripts que te gestionan el tener diferentes versiones de Ruby en tu sistema.

Entre ellos destacan dos

  • RVM
  • rbenv

Este segundo parece tener más fama por ser más sencillo para gestionar las versiones, así que de momento me centro en trabajar con él

Instalación de rbenv

He visto que en ubuntu 14.04 se ofrece de paquetería, pero también se puede bajar con Git, y he decidido hacerlo de esta forma. Existe este tutoria bastante sencillo y conciso, sobre osx pero que aplica muy bien aqui

cd
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> .bashrc
echo 'eval "$(rbenv init -)"' >> .bashrc

Por si solo rbenv no descarga versiones, pero han añadido un plugin muy bueno que hace que con un comando te descargue la versión que necesites, así que seguimos añadiendo lo siguiente:

cd
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

Y para para finalizar cargamos el .bashrc que acabamos de modificar

source ~/.bashrc

con esto ya podemos ejecutar rbenv.


Instalación de versiones

Para ver la lista de versiones que tenemos disponibles:

rbenv install -l

Y para instalar una en concreto,

rbenv install 1.9.3-p0

Cambiando entre versiones

Por defecto rbenv siempre nos dejará la versión del sistema si es que la tenemos instalada. Hay dos formas de cambiar de version:

  • local
  • global

La forma local se hace con el siguiente comando:

rbenv local 1.9.3-p0

Esto nos creará un fichero en el directorio actual .ruby-version, que contiene la version que hemos especificado, y cualquier ejecución de ruby dentro de este path, incluso por directorios contenidos en él, ejecutará esa version.

La otra forma es la global, que cambiara a esa versión de ruby por defecto para el usuario.

Las gemas, las versiones y Rehash

Muy importante tener en cuenta que cada vez que instalamos una gema lo hacemos para la version que estamos ejecutando en ese momento, y no se comparten gemas entre diferentes versiones, para no tener problemas de compatibilidades entre diferentes versiones.

Hay gemas que añaden comandos a la shell, y con rbenv no van a estar dispoinibles de primeras, pero si lo estarán si después de instalar la gema, como bundler, ejecutamos

rbenv rehash

Script preparación rbenv

Estos son los pasos que se han ejecutado en una máquina para tener lista de forma automática una versión de ruby funcionando en uno directorio cualquiera.

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
~/.rbenv/bin/rbenv init 2>> ~/.bash_profile
source ~/.bash_profile
mkdir ~/r10k-work
cd ~/r10k-work
yum install -y gcc bzip2 openssl-devel libyaml-devel libffi-devel readline-devel zlib-devel gdbm-devel ncurses-devel
rbenv install 1.9.3-p551
rbenv local 1.9.3-p55
gem install --no-rdoc --no-ri r10k
source ~/.bash_profile

Diferentes interpretes de Ruby

Para una información completa se puede ver esta página

Por resumir, la versión de Ruby "oficial" es la Ruby MRI, mantenida por el equipo de Yukihiro Matsumoto, que es el creador de Ruby, pero existen diferentes visiones de como interpretar ruby, para diferentes escenarios, y asi podemos encontrar otros como JRuby, Rubiniux o MRuby entre otros, que pueden ser mejores en ciertos aspectos.

Hace unos años existía el REE (Ruby Enterprise Edition) que se hizo bastante famos a la hora de usar Rails, mezclado con passenger, pero en 2012 fue descontinuado.


Frameworks

En ruby te puedes encontrar muchos frameworks que facilitan la vida del programador dependiendo de que tipo de aplicación se quiera hacer. Las más famosas son:

  • Rubi on Rails
  • Sinatra

Este articulo muestra una comparativa entre los dos