0

Manejo de Base de Datos con Sinatra



Manejo de Base de Datos con Sinatra

Manejo de Base de Datos con Sinatra 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.

mas tutoriales de informatica y programacion

Temas mas vistos

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.

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:

  1. 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.

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:

  1. gem install data_mapper

Esto nos debe producir un resultado similar al siguiente:

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:

  1. gem install dmsqliteadapter

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.

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:

    1. require ‘dm-core’
    1. require ‘dm-migrations’
    1. DataMapper.setup(:default, «sqlite3://#{Dir.pwd}/musica.db»)
    1.  
    1. class Canciones
    1. include DataMapper::Resource
    1. property :id, Serial
    1. property :titulo, String
    1. property :duracion, Integer
    1. property :fecha_lanzamiento, Date
    1. end
  1. 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:

  1. irb

Una vez que iniciamos la misma podemos hacer el require de nuestra clase al colocar el comando:

  1. require “./canciones

Esto debe devolver true de ser exitoso lo que podemos apreciar en la siguiente imagen.

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:

  1. 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:

  1. cancion = Canciones.new

Para luego almacenar la misma con el siguiente comando:

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:

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:

    1. canción.tiulo = Nueva cancion
    1.  
    1. canción.duracion = 315
    1.  
    1. canción.fecha_lanzamiento = Date.new(2010)
    1.  
  1. 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.

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:

  1. Canciones.all

También podemos hacer una cuenta de cuantos registros tenemos con lo siguiente.

  1. Canciones.count

Para finalizar veamos la respuesta recibida en nuestra consola al ejecutar estos dos comandos.

Hemos insertado nuestro primer registro y lo hemos consultado de forma exitosa, aprendiendo así el manejo de las Base de Datos con Sinatra







comparte con tus amigos

codigo fuente

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *