Ruby con Vagrant

2015-08-10

Esta semana mi compañero Miguel y yo hemos comenzado un proyecto. Hemos decidido usar Ruby por dos razones:

  • Nos ha molado mucho el lenguaje después de la introducción que nos ofrecieron Imo y Ancor el jueves pasado.
  • Queremos acostumbrarnos a lenguajes dinámicos ya que estamos muy acostumbrados a lenguajes como C#. Esto nos vendrá muy bien no solo por aprender a pensar de otra manera, sino también para interiorizar mejor nuestras skills de desarrollo y verificar que hemos entendido conceptos.
    Antes de empezar decidimos que necesitábamos una máquina virtual con Vagrant. ¿Qué es Vagrant? Vagrant es una herramienta que nos permite lanzar una máquina virtual muy ligera para manejar entornos de desarrollo. Estas son algunas de las ventajas que tenemos a la hora de usar vagrant:

  • No tendremos que tener en nuestros equipos personales cosas que sólo las necesitaremos para ese proyecto (librerías, sdk, base de datos…) sino que las tendremos en una máquina virtual.

  • Todos los desarrolladores del equipo pueden tener la misma máquina en la que desarrollar.
  • Nuestra máquina de desarrollo tendrá lo mínimo indispensable.
  • Podemos hacer que nuestra máquina de desarrollo sea muy parecida/igual que la de producción.
  • Podemos seguir desarrollando desde nuestra máquina personal, ya que disponemos de una carpeta compartida.
    ARRANCANDO LA MÁQUINA VAGRANT

Para poder usar una máquina Vagrant debemos instalar Vagrant y VirtualBox. Una vez instalado todo podemos ir a la carpeta de nuestro proyecto (en el root) e iniciar nuestra máquina vagrant a través de un terminal.

1
vagrant init ubuntu/trusty64

En este caso estaríamos instalando una máquina con Ubuntu de 64 bits vacía (podemos bajar otros sistemas operativos aquí). Lo que ha pasado es que en la carpeta del proyecto se nos ha creado un fichero llamado VagrantFile el cual contiene la configuración inicial de la máquina (podemos modificar este archivo para cambiar la configuración). Ahora para arrancarla debemos escribir el siguiente comando en la terminal:

1
vagrant up

Una vez esté arrancada la máquina podremos conectarnos por ssh. En el caso de tener Windows debemos usar Putty si no podremos usar el comando “vagrant ssh” y ya podremos hacer lo que queramos en la máquina. Al conectarnos por ssh tanto el nombre de usuario como la clave por defecto es “vagrant”. En la raíz de nuestra máquina vagrant tendremos una carpeta “/vagrant” que por defecto es nuestra carpeta compartida, fuera de la máquina virtual esta carpeta será en la que está el VagrantFile. Si creásemos un fichero en la carpeta “/vagrant” inmediatamente esta aparecerá en nuestro equipo y viceversa.

INSTALANDO RUBY

En nuestro vagrant, ubuntu viene con la versión 1.9 de Ruby. Nosotros queríamos trabajar con la versión de Ruby 2.2.2 para ello tuvimos que instalar primero Ruby Version Manager (rvm). Para ello:

1
2
3
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
\curl -sSL https://get.rvm.io | bash
source /home/vagrant/.rvm/scripts/rvm

Teniendo ya la rvm podemos instalar Ruby 2.2.2:

1
rvm install 2.2.2

Con esto ya tendremos nuestra versión de Ruby. Si tuviéramos un Gemfile en nuestro proyecto podríamos instalar “bundler” en la máquina e instalar todas las gemas recogidas en el Gemfile del proyecto (ya que este lo encontraremos en la carpeta /vagrant de la raíz).

NOTAS DE MYSQL

Para instalar la gema mysql2 al menos en nuestro caso fue necesario instalar libmysqlclient-dev antes:

1
sudo apt-get install libmysqlclient-dev

Instalando Mysql en ubuntu y conectándome como root:

1
2
sudo apt-get install mysql-server-5.6
mysql -u root -p

Es posible que al conectarse de un error 200 y es porque algunas veces el servidor mysql no se arranca al instalarlo. Para arrancarlo usamos:

1
sudo /etc/init.d/mysql start