Mi primer aplicación de Rails en Ubuntu

Cuando empiezas con ruby, hacerlo desde Ubuntu no es la experiencia que todos te muestran respecto a mac, no tenemos estas utilerias que hacen el trabajo pesado por ti. Dejame enseñarte una forma de hacerlo.

Ruby es un lenguaje que esta cambiando rápidamente, liberando nuevas versiones cada año, como programador de ruby verás como el usar un manejador de versiones te facilita el trabajar en distintos proyectos y con distintas versiones.

Para programadores que estan descubriendo ruby y mas en Ubuntu rvm es una de las utilerias mas facil de usar e instalar, los pasos pueden variar pero tienen una excelente guia de como hacerlo en Ubuntu RVM, en resumen desde tu terminal ejecuta:

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
\curl -sSL https://get.rvm.io | bash -s stable

Los comandos anteriores se hacen cargo de instalar el manejador de versiones de ruby, el primer commando agrega la llave para poder desencriptar e instalar el paquete, el segundo comando simplemente es un script con todas las librerias necesarias para funcionar.

Una vez instalado rvm, la terminal no tendra conocimiento de la nueva utileria, vamos a tener que cerrar completamente la terminar y abrirla nuevamente.

En este punto vamos ya deberiamos tener accesso al commando rvm, para comprobar que se instalo correctamente ejecuta:

rvm -v

Si puedes ver la version de rvm vamos por el camino correcto, el siguiente paso es instalar una version de ruby.

Les recomiendo instalar una version anterior a la mas reciente publicada con el objetivo de minimizar conflictos entre gemas, tener mejor soporte en otras dependencias que nuestra aplicacion vaya a tener, dicho de otra forma la version de ruby estara mas estable y soportada por la comunidad.

rvm install 2.4.4

Este comando tarda un poco en completarse, pero al final contaremos con el soporte en ruby que tanto buscabamos, para comprobarlo, podemos abrir una terminal interactiva de ruby corriento irb en tu terminal y ejecutando lo siguiente:

puts 'Hello World'

Deberías ver el mensaje de Hello World en la terminal.

Instalando Rails

Ya tenemos instalado ruby, ahora necesitaremos un lugar donde comenzar nuestra aplicación, para esto vamos a instalar Rails.

Primero instalaremos algunas librerias que Rails necesarias para poder instalar Rails y que funcione correctamente, comenzando con agregar soporte para javascript, instalando nodejs:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

Si no hacemos esto al intentar iniciar nuestra aplicación de Rails tendremos el siguiente error:

/usr/local/rvm/rubies/ruby-2.4.4/lib/ruby/gems/2.4.0/gems/bundler-1.16.3/lib/bundler/runtime.rb:84:in `rescue in block (2 levels) in require': There was an error while trying to load the gem 'uglifier'. (Bundler::GemRequireError)
Gem Load Error is: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes.

Depues de agregar el compilador de javascript, ahora si procederemos a instalar la gema de rails:

gem install rails -v 5.2.0

Esto instalara rails con todas sus dependencias, al terminar de igual forma que como lo hicimos con ruby, comprobaremos que tenemos accesso al comando de rails:

rails -v

Esto nos mostrara la version de Rails instalda.

Instalando nuesta base de datos

Toda aplicacion en algun momento necesita persistir la información, Rails tiene soporte para varias bases de datos, incluida Postgresql que será la que usaremos para nuestra primera aplicación.

Para comenzar con su instalación, ejecuta en tu terminal:

sudo sh -c "echo 'deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main' > /etc/apt/sources.list.d/pgdg.list"
wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-common postgresql-client postgresql postgresql-contrib
service postgresql start

Una vez que terminemos de ejecutar estos comandos, podremos conectarnos a la base de datos, simplemente con:

psql -U postgres

Podemos cerrar la consola simplemente escribiendo \q

Creando nuestra primer aplicación de Rails

Una vez que hemos intalado Ruby, Rails y Postgresql es tiempo de crear nuesta primer aplicación, para esto vamos a crear una aplicación de listado de tareas o TODO's en ingles.

Rails nos facilita la vida, teniendo generadores que agregan soporte a las librerias que ya instalamos, para iniciar una aplicacion con la base de datos en postgres, ejecutemos:

rails new todoapp -d postgresql
cd todoapp/

rails new crea un esqueleto de una aplicación de Rails dentro de la carpeta con el nombre que especifiquemos, en este caso todoapp, para saber si el generador funciono, iniciaremos el servidor ejecutando:

rails server

Una vez que se termine de inicializar, podremos abrir la siguiente url
http://localhost:3000/ en cualquier navegador como Chrome, veremos una pantalla como la siguente:

Screen-Shot-2018-08-03-at-4.10.41-PM-1

Felicidades si has llegado hasta este punto, ya tienes tu primera aplicación en Rails, ahora vamos agregarle la funcionalidad de una lista de tareas.

Mi primeros pasos en rails

Primero tomemos un momento para analizar lo que tenemos que hacer para un manejador de tareas:

  1. Recolectar la información de las tareas
  2. Tenemos que llevar registro de las tareas agregadas
  3. Permitir completar las tareas agregadas

Para el primer paso, Rails nos sigue facilitando el trabajo con sus generadores, basta con crear un scaffold el cual nos creara toda la estructura necesaria para agregar, modificar y borrar, es decir nos creara el modelo, la vista y un controlador ya configurado para funcionar. Solo hay que ejecutar el siguente comando:

rails generate scaffold task title:string description:text completed:boolean

En el comando anterior el primer parametro es el nombre de nuestro recurso, seguido por la lista de atributos que deseamos manejar. En nuestro comando queremos crear un recurso task que contará con un title, description y completed, estos atributos podras verlos en el archivo de migracion que Rails autogenerara para crearlos en la base de datos junto al nombre de la tabla.

Antes de terminar de hablar sobre la migración necesitaremos realizar unos pequeños ajustes, especificaremos que el atributo de title no pueda contener un valor nulo ya que no podemos tener una tarea sin un titulo, también las tareas se agregarán sin completarse para esto le especificaremos un valor predeterminado al atributo de completed que sea false. Si tienes problemas para localizar el archivo de la migracion este se encuentra dentro del directorio de db/migrate/, tu migracion deberia ser igual a la siguiente:

class CreateTasks < ActiveRecord::Migration[5.2]
  def change
    create_table :tasks do |t|
      t.string :title, null: false
      t.text :description
      t.boolean :completed, default: false

      t.timestamps
    end
  end
end

Una vez terminemos las modificaciones, vamos a pedirle a Rails que modifique nuestra base de datos para tomar en cuenta estos cambios, para correr la migración tenemos el siguiente comando:

rails db:migrate

Los cambios en los atributos de la base de datos, tambien debemos ponerlos en su modelo, Active Record nos facilita esta tarea simplemente con un par de palabras, abre el archivo del modelo que se encuentra en la ruta app/models/task.rb y modificalo de la siguiente manera:

class Task < ApplicationRecord
  validates :title, presence: true
end

Listo, hemos terminado, reinicia la aplicación de Rails de nuevo con:

Ctrl-C
rails server

Y visita http://localhost:3000/tasks donde verás una página como la siguiente:

Screen-Shot-2018-08-05-at-2.36.16-PM

Desde aquí podremos crear nuevas tareas haciendo click en new task, también veremos la lista de las tareas que ya hemos creado y para completarla simplemente editamos cada tarea desde su respectivo link de edit y marcamos el checkbox como completado.

Felicidades ya tienes tu primer aplicación de Rails.




comments powered by Disqus

Siguenos

Boletí de noticias