Você está na página 1de 39

Capacitación formadores Generación de

capacidades en el Ecosistema Digital de


Bogotá

Formación especializada TI
Ruby on Rails
Ruby on Rails es un entorno de desarrollo web de código abierto que está
optimizado para la satisfacción de los programadores y para la productividad
sostenible. Te permite escribir un buen código evitando que te repitas y
favoreciendo la convención antes que la configuración.
¿Qué es Rails?
Rails es un armazón para construir aplicaciones web que acceden a bases de
datos.

¿Un arma-qué?

Un conjunto de librerías, automatismos y convenciones destinados a resolver los


problemas más comunes a la hora de desarrollar una aplicación web, para que el
programador pueda concentrarse en los aspectos únicos y diferenciales de su
proyecto en lugar de los problemas recurrentes.
¿Para qué se utiliza?
Para ayudar a construir aplicaciones modernas de internet
como: Twitter, Scribd, Hulu, Xing, Soundcloud, Basecamp, Github…

¿De donde sale?

Rails fue creado en 2003 por David Heinemeier Hansson y desde entonces ha
sido extendido por el Rails core team, más de 2.100 colaboradores y soportado
por una extensa y activa comunidad.
¿Por qué Ruby on Rails?
● Esta escrito en Ruby
● SASS, CoffeScritp, HAML, etc. Son nativos de Rails
● ActiveRecord (Nada SQL)
● Usa MVC (Promueve buenas practicas de desarrollo)
● Comunidad fuerte
● Esta probado
Principios Rais
● No te repitas a ti mismo (Don't Repeat Yourself): DRY establece "Cada pieza
del conocimiento debe ser única, sin ambigüedades, con su propia autoridad
y representación dentro de un sistema". nuestro código es más fácil de
mantener, más reutilizable y con menos errores

● Convención sobre Configuración: Rails tiene sus opiniones acerca de el


mejor de hacer muchas cosas en las aplicaciones web, y por defecto las
configura como convenciones, en lugar de requerir que se especifiquen
minuciosamente a través de ficheros de configuración sin fin.
Instalación y verificación de sistema
Verificar Ruby
$ gem install sqlite3

Instalar Rails
Nuestra primer aplicación
Para iniciar nuestra primer aplicación basta con situarnos en el lugar en que
queremos crear nuestro proyecto y usar el comando rails new nombre-proyecto

Este comando creara un proyecto con la estructura básica de rails y


adicionalmente descargara algunas gemas por defecto que nos serán útiles.
Nuestra primer aplicación
Luego de terminar de crear nuestro primer
proyecto tendremos la estructura básica de
Rails, de esto hablaremos más adelante.

Ahora podemos hacer uso de otro


comando de Rails para desplegar nuestro
proyecto en un servidor web embebido en
Rails y ver nuestro avances en el desarrollo.

El comando es Rails server. Y una vez


ejecutado podemos acceder a
http://localhost:3000
Estructura de proyecto
Estructura de proyecto
Estructura de proyecto
MVC (modelo - vista - controlador)
El patrón de arquitectura modelo vista controlador (MVC) impone la separación
de entre los datos de la aplicación (tales como la información del usuario) y el
código utilizado para mostrarlo, que es una forma común de estructurar una
interfaz gráfica de usuario, puedes notar en la estructura de la aplicación
estándar de Rails, dentro del directorio app contiene tres subdirectorios model,
views, controller.
MVC (modelo - vista - controlador)
Cuando interactúa con Rails el Browser envía una solicitud que es recibida por el
servidor web y enviada al controlador. En algunos casos, el controlador mostrará
inmediatamente una vista, que es una plantilla que se convierte a HTML y se
envía de vuelta al navegador. Más comúnmente para sitios dinámicos, el
controlador interactúa con un modelo, que es un objeto Ruby que representa un
elemento del sitio (como un usuario) y se encarga de comunicarse con la base
de datos. Después de invocar el modelo, el controlador muestra la vista y
devuelve la página web completa al navegador como HTML.
MVC (modelo - vista - controlador)
Creando controladores
Para generar un controlador lo podríamos hacer creando un archivo en la carpeta
app/controllers, sin embargo deberíamos hacer otras configuraciones como el
enrutamiento. Asi que nos vamos a apoyar en los generadores de código por
consola que nos provee Rails. Vamos a usar el comando rails generate
[controller] [nombre-controlador] [funciones*]
ERB
Es la extensión usada por Rails para las vistas, los archivos en este formato
soportar HTML y por medio de las etiquetas <% %> o <%= %> Ruby. Lo
aconsejado es usarlo principalmente para imprimir valores y ejecutar algunos
ciclos en la vista, la idea es no implementar lógica en las vistas.
Assets
En la carpeta Assets encontraremos un archivo base para CSS y JS
adicionalmente todas las hojas de estilo que queramos agregar las podemos
copiar a esta carpeta y estarán disponibles o también podemos instalar por
medio de gemas otras librerías CSS o JavaScript.
Creando Modelos
Para generar un modelo vamos a usar el comando rails generate [model]
[nombre-controlador] [campo: tipo*] en este debemos especificar el nombre del
modelo y los campos que va a tener en la base de datos. Por defecto Rails
agrega un campo id y un campo timestap para cada modelo. Los modelos
debemos definirlos en singular(el plural va en la BD) y usando la primera en
mayúscula.
Bases de datos
Por defecto las aplicaciones en Rails configuran como base de datos SQLite que
es básicamente un sistema de gestión de base de datos portable que se instala
en el proyecto. Sin embargo si queremos trabajar con bases de datos externas
podemos cambiar esta configuración en el archivo database.yml en la carpeta
config y agregando las respectivas gemas.
Migraciones
Son archivos que se encargan de modificar las bases de datos. Las operaciones
se hacen por medio de archivos y no directamente sobre la base de datos.

Una vez hemos creado el modelo y queremos empezar a almacenar datos en la


base de datos debemos realizar la migración, esto se hace por medio del
comando rake db:migrate
Migraciones
Si nos equivocamos en la definición de nuestra base de datos podemos
eliminarla (drop) por medio del comando rake db:rollback. Este deshace la ultima
sentencia sql y podríamos modificar el archivo de migración y volver a usar rake
db:migrate para volver a crear la tabla.
Layouts
Son plantillas de
componentes
de las paginas
HTML que
podemos usar
en nuestras
vistas para no
repetir código.
Routes
Dentro de la carpeta de configuración encontramos un archivo llamado Routes,
que como su nombre indica gestiona las rutas de nuestra aplicación. En este
podemos ver las rutas que se generaron a nuestro controlador y adicional
podemos definir reglas especificas como por ejemplo nuestra ruta raíz (root).
Routing
Cuando se envía una petición a la pagina Rails se enfoca en la ruta recibida, ya que esta identifica el
recurso solicitado. Adicional también se analiza el verbo HTTP con que se envió la solicitud.

● GET(defecto)
● POST
● PATCH
● PUT
● DELETE

Desde el archivo routes podemos reconfigurar las rutas especificando una serie de reglas, por ejemplo
definir una ruta personalizada y dirigirla a un método de un controlador especifico.
Recursos
Dentro de routes también podemos definir resources que básicamente son rutas para
cada uno de los verbos HTTP sobre un controlador. Son las rutas estándar para hacer un
CRUD.

Adicionalmente se pueden pasar como parámetros de resources only: [:acción] o except:


[:acción] para excluir algunos verbos o usar solo unos verbos sobre el recurso.
Definiendo un controlador REST
Cuando definimos un recurso básicamente es porque vamos a usar un patrón de una API REST y como
vimos en el recurso este define una serie de rutas para cada verbo y le asigna una función en el
controlador.

La primer ruta get "/tareas“ que apunta a la función index. Hasta este momento no existe el controlador
tareas asi que debemos crearlo, para hacerlo paso a paso creemos el archivo desde sublime. Recuerda
la convención del nombre tareas_controller y dentro la convención de clases TareasController y
recuerda que todos los controladores heredan de <ApplicationController.

Luego de que tengas el controlador creado ahora si podremos crear las funciones, iniciemos por index.
En Rails cada función tiene una vista asociada asi que no olvides en views crear una carpeta para el
controlador tareas y luego dentro un archivo para cada método que generemos en este caso
index.html.erb. Con esto ya podríamos acceder a la ruta.
Controlador REST Index
Index
La idea la función index en un API REST es que esta me permita listar todos los elementos de un
recurso(tabla). Para esto podemos apoyarnos en las funciones del modelo que habíamos definido
anteriormente (ActiveRecord). Para utilizarlo primero debemos crear una instancia al modelo y luego
usar su método all. Este valor lo debemos asignar a una variable de clase para poder pasar estos
datos a la vista.
Show
Este otro método esta diseñado para mostrar un solo dato del recurso filtrado por su id. Para traer este
dato podemos usar la función del modelo find. Esta función recibe como argumentos el id y nosotros lo
podemos obtener de la url por medio del método params de Rails. El cual consiste en un hash con
todos los parámetros que se enviaron en la petición.
New
Este método se refiere a la vista que contiene el formulario para crear un nuevo elemento(registro) de
nuestro recurso(tabla). Para que podamos encapsular la información del formulario debemos crear un
nuevo objeto de nuestro modelo y enviarlo a la vista. En la vista nos vamos a apoyar en un helper de
Rails llamado form_for para diseñar el formulario. En este caso no debemos definir ruta ni verbo ya que
la configuración por defecto nos sirve.
Create
Este método recibe datos desde un formulario de la vista new. Para recibirlo debemos usar nuevamente
el método params de Rails y para cada parámetro asignarlo a un elemento de un hash. Este hash es el
argumento que le vamos a pasar a un nuevo objeto de nuestro modelo y que luego almacenaremos por
medio del método save. Luego podemos hacer un redireccionamiento al elemento que acabamos de
crear para que no nos quedamos en el formulario new.

En Ruby si tratamos de ir a un objeto del modelo y


Este ya existe nos lleva al método show con el id
Del objeto. Si no existe en la BD nos lleva al método
Create.
Validaciones
Cuando creamos un nuevo elemento desde un formulario es posible agregar validaciones, estas
validaciones lo ideal es realizarlas en el modelo ya que es quien se encarga de insertar los datos. Para
esto Rails contiene unos helpers que nos sirven para este propósito. Si no se cumple la condición no se
crea el nuevo elemento. Luego podríamos agregar la lógica en el controlador para que si no se pudo
insertar un registro veamos algún tipo de mensaje.
Destroy
Este método nos permite eliminar un elemento de la base de datos, para eliminar
este elemento debemos recibir su id. Para enviar esta solicitud podemos usar el
helper link_to desde la vista para indicar la ruta y método. En el controlador
vamos a usar el método destroy de ActiveRecord y leugo a redirigir a la ruta al
index.
Edit
Este método es similar a New ya que básicamente nos va a proveer el objeto y el formulario para editar
un registro. Entonces básicamente lo que hacemos es crear una instancia con el registro a editar a
partir de su id. Y en la vista hacemos el formulario que nos permitirá enviar el objeto editado a la ruta
update, en este caso nos sirve el mismo formulario de crear y como el parámetro que recibe (tarea) ya
tiene un id y esta en la BD form_for de Rails entiende que se esta editando este objeto y envía el
formulario al método update.
Vistas parciales
Uno de los principios de Rails es no repetir código, así que para esto podemos usar vistas parciales que
son porciones de una vista que se pueden reutilizar, por ejemplo el formulario de crear tarea y el de
editar son prácticamente iguales. Estos se deben guardar en las vistas y debe usar como convención un
guion bajo( _ ) al inicio. Para llamarlo en otra vista debe hacerse por medio de la función render y como
argumento la ruta de nuestro parcial.
Update
Este método recibe un objeto ya existente en una BD y lo modifica por medio de
la función update de ActiveRecord, al igual que con save debemos validar si este
se modifico o sino redirigir y mostrar el error.
Terminando de completar las rutas
Ahora para que este simple ejercicio este completo agreguemos rutas para que todos los métodos de la
pagina sean accesible.

La primera que podemos agregar en el index es una ruta a show para cada elemento.

Luego desde show seria interesante agregar un enlace a editar.

Finalmente desde el formulario podríamos agregar un botón de volver al inicio, por si no queremo hacer
nada.

Você também pode gostar