Cargando



Manejo de Base de Datos con Sinatra

Te mostramos como iniciar a incorporar Bases de Datos y manipularlas desde una aplicación hecha en Sinatra, utilizando el motor SQLite.


ago 11 2015 12:42
Profesional
ago 22 2016 17:46

sinatra-bd-cover.png

 

Una vez que nuestra aplicación web estás definida y que ya sabemos que necesitamos lograr, muchas veces es necesario lograr una forma de persistencia de datos, esto se traduce en almacenar los datos obtenidos por la misma en algún lugar para luego utilizarlos y esto es lo que hace los motores de Bases de Datos por nosotros.

 

Teniendo entonces la necesidad de que nuestros datos persistan en las aplicaciones, es cuando debemos buscar o entender como se hace el manejo de estas operaciones y a pesar que puede sonar complejo en la actualidad existen muchas herramientas que nos facilitan el trabajo, por ejemplo existen los ORM que nos dan la posibilidad de crear estructuras que son independientes del motor por lo que casi nunca llegaremos a escribir un query puro.

 

En el caso de Sinatra hay varias gemas que ya se encargan de las conexiones y la administración de las Bases de Datos por lo que veremos cuáles son y cómo podemos integrarlas en nuestra aplicación.

 

Elegir el motor de Base de Datos


El primer paso que debemos hacer es elegir el motor de Base de Datos adecuado para nuestra aplicación, en el mercado existen muchas soluciones y cada una con un propósito diferente, en el caso de Sinatra generalmente utilizaremos MySQL o PostgreSQL en un ambiente de producción, o en su defecto SQLite en ambientes de desarrollo.

 

En el caso de este tutorial nos decantamos por la última opción debido a su facilidad de instalación y la rapidez con la que podemos empezar a trabajar.

 

Instalando SQLite


Para instalar este motor en primer lugar vamos a su web oficial y descargamos el paquete correspondiente a nuestro sistema, muchas distribuciones en Linux ya vienen con este motor instalado y funcional por lo que veremos cómo realizar este proceso en Windows.

 

En la imagen anterior vemos que debemos descargar los binarios pre compilados, una vez hecho esto los vamos a descomprimir en una carpeta llamada SQLite en nuestra unidad C: y añadimos dicha carpeta como una variable de entorno en nuestro PATH. Una vez hecho lo anterior al escribir sqlite3 en nuestra consola debemos ver algo como lo siguiente.

 

sinatra-base-datos-2.jpg

 

Una vez cubierto este paso ahora debemos descargar el driver correspondiente para Ruby, es por ello que en nuestra consola de comandos debemos escribir lo siguiente:

gem install sqlite3
Esto nos debe dar un resultado como el siguiente indicando que fue exitosa la instalación de la gema para poder conectarnos a SQLite.

 

sinatra-base-datos-3.jpg

 

 

El ORM


Ya que tenemos nuestro motor de Base de Datos, ahora es el turno de obtener el ORM, esta es una herramienta que nos permite convertir las tablas de una Base de Datos en objetos, de esta forma podemos trabajar con ellas en nuestra aplicación de forma más sencilla.

 

Ventaja
La ventaja principal del ORM es que nos permite ser independientes del motor, ya que al no necesitar escribir código SQL directamente podemos cambiar simplemente la configuración y hacer las migraciones correspondientes.

 

Por supuesto existen muchas opciones para trabajar con Ruby y con Sinatra, sin embargo una de las más amigables para iniciar es DataMapper.

 

Instalar DataMapper


La instalación de este ORM no puede ser más sencilla, y esto gracias a que también es una gema, por lo que simplemente debemos ejecutar un par de instrucciones en nuestra consola, la primera es la siguiente que nos ayuda a obtener el componente base:
gem install data_mapper
Esto nos debe producir un resultado similar al siguiente:

 

sinatra-base-datos-4.jpg

 

Ahora que tenemos la base simplemente nos falta instalar el driver para que DataMapper pueda interactuar con SQLite, para ello debemos instalar la siguiente gema:

gem install dm-sqlite-adapter
Esto es lo que va a permitir a nuestras aplicaciones crear tablas y utilizar Base de Datos sin necesidad de tener que escribir código SQL, al final la instalación del driver debe darnos el siguiente mensaje en nuestra consola.

 

sinatra-base-datos-5.jpg

 

 

 

Conectarnos a una Base de Datos


Ya que tenemos las dependencias instaladas, lo que debemos hacer ahora es proceder a probar como funciona nuestro nuevo entorno de persistencia de datos, para ello vamos a crear una clase. Esta clase va a ser la base que nos va a permitir crear una tabla y almacenar registros en ella, esto también nos da la oportunidad de no tener que escribir código SQL de forma directa, por lo que en un futuro cuando debamos utilizar otro motor de Base de Datos, simplemente con cambiar la configuración será suficiente.

 

En nuestra carpeta de aplicación vamos a crear un archivo llamado canciones.rb, esta clase lo que debe hacer es tener el mapa de cómo podemos almacenar una canción en Base de Datos, veamos el contenido y luego explicamos que hace cada sección del mismo:

require 'dm-core'
require 'dm-migrations'
DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/musica.db")

class Canciones
  include DataMapper::Resource
  property :id, Serial
  property :titulo, String
  property :duracion, Integer
  property :fecha_lanzamiento, Date
end
DataMapper.finalize
En primer lugar debemos hacer los require de los componentes clave de DataMapper en este caso dm-core y dm-migrations. Luego creamos una línea de configuración que es la que nos permite utilizar en primer lugar SQLite para acto seguido crear el archivo, en este caso musica.db, en caso que ya exista el archivo quiere decir que ya existe la Base de Datos por lo que simplemente se haría la conexión.

 

Finalmente hacemos nuestra clase Canciones la cual contendrá una serie de atributos identificando la misma y se hace la inclusión de otra clase de DataMapper. Ya con esto estamos listos para la siguiente fase que es probar nuestra aplicación. Como no hemos creado nada para ver en nuestro navegador es buen momento de utilizar la consola interactiva de Ruby (irb), la cual nos va a permitir comprobar que todo vaya por buen camino, además de permitirnos acostumbrarnos un poco al DataMapper.

 

Probar nuestra aplicación


En primer lugar en nuestra terminal o consola debemos dirigirnos a la carpeta donde hemos almacenado nuestro archivo canciones.rb ya que este es la clave para desarrollar nuestro ejemplo, una vez ahí debemos iniciar nuestra consola interactiva Ruby al escribir el comando:
irb
Una vez que iniciamos la misma podemos hacer el require de nuestra clase al colocar el comando:
require “./canciones”
Esto debe devolver true de ser exitoso lo que podemos apreciar en la siguiente imagen.

 

sinatra-base-datos-6.jpg

 

Acto siguiente debemos utilizar la herramienta auto_migrate de DataMapper, esta nos va a permitir crear la tabla con los atributos de nuestra clase en el archivo de Base de Datos correspondiente. Para ello simplemente escribimos lo siguiente:

Canciones.auto_migrate!
Lo cual nos crea la estructura necesaria para poder almacenar los registros.

 

Crear nuestra primera canción


Ahora lo que debemos hacer es crear el objeto que nos va a permitir almacenar en Base de Datos los valores necesarios, para ello vamos a crear un objeto llamado canción:
cancion = Canciones.new
Para luego almacenar la misma con el siguiente comando:

 

sinatra-base-datos-7.jpg

 

Esto nos da ya una plataforma base para incluir la información en nuestra Base de Datos, veamos lo que debe mostrar la consola en este punto:

 

sinatra-base-datos-7.jpg

 

Hecho esto ya podemos almacenar los datos para ello. Estando aún en nuestra consola vamos a añadir uno a uno los atributos de nuestro objeto, veamos:

canción.tiulo = “Nueva cancion”

canción.duracion = “315”

canción.fecha_lanzamiento = Date.new(2010)

canción.save
Cada una de las instrucciones anteriores fue almacenando en el objeto canción y al ejecutar el método save todo esto se almacena en la Base de Datos. Vemos en la imagen siguiente el proceso que hemos realizado.

 

sinatra-base-datos-8.jpg

 

Notamos también que Ruby es case sensitive por lo que debemos tener cuidado con como escribimos nuestras clases, ya que en el caso de la consola hubo un error al escribir la clase Date, ya que se escribió Date, lo cual fue detectado inmediatamente. Finalmente si queremos consultar las canciones almacenadas basta con escribir la siguiente instrucción:

Canciones.all
También podemos hacer una cuenta de cuantos registros tenemos con lo siguiente.
Canciones.count
Para finalizar veamos la respuesta recibida en nuestra consola al ejecutar estos dos comandos.

 

sinatra-base-datos-9.jpg

 

Hemos insertado nuestro primer registro y lo hemos consultado de forma exitosa, aprendiendo así el manejo de las Base de Datos con Sinatra, aunque el más observador se puede haber dado cuenta que todo lo que hicimos fue en Ruby, y esta era la gran idea, demostrar como sabiendo Ruby podemos trabajar con Sinatra sin tener muchas complicaciones.


¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X