Utilizando la gema ActiveRecord en Ruby

Jesus Alfonso Pinto Delgado
Academia Hack
Published in
3 min readSep 9, 2019
Photo by Jesus Alfonso Pinto Delgado

Esta guía les orientara en los aspectos básicos del ORM de Ruby, tales como establecer una conexión a la base de datos y el manejo del CRUD a través de modelos sin utilizar Rails.

La estructura de carpetas propuesta es la siguiente:

Estructura sugerida

Nuestro archivo connection.rb se puede configurar de dos formas:

La forma sencilla: (sin archivo .yml, ni entornos [development, test, production])

No recomiendo usar esta

Y si deseamos usar el archivo .yml, y definir los entornos (development, test, production), debemos usar:

Recomiendo usar esta

Nuestro archivo config.yml debe contener: (leer nota al pie del código)

  • Recuerda que puedes crear archivos con la instrucción touch:
touch rakefile
touch README.md
mkdir db
touch db/config.yml
touch db/data_base.sqlite3
touch db/connection.rb
mkdir lib
touch lib/main.rb

Nuestro archivo Gemfile debe crearse y llenarse de la siguiente forma:

Usando nuestra gema Bundler, a través de la consola. Con las siguientes instrucciones:

bundle init
bundle add sqlite3
bundle add activerecord

NOTAS:

Bundler es una manejador de dependencias para Ruby. Aunque viene incluido con Rails, Bundler no es exclusivo de Rails, lo puedes usar para manejar las dependencias de cualquier proyecto de Ruby.

La dependencia de clases es un concepto de la programación orientada a objetos que nos indica la relación existente entre dos clases. Como su nombre indica nos está diciendo que una clase depende de otra para realizar su funcionamiento. En este caso, estamos diciendo, nuestro proyecto depende de estas librerías…

A las librerías de Ruby se les conoce como gemas.

  • Si no has instalado Bundler, lo puedes hacer con la instrucción:
gem install bundler
  • Si copias tu proyecto en otra máquina recuerda usar la instrucción:
bundle install

Nuestro archivo main.rb debe contener:

APÉNDICE

Uso de transacciones:

Las transacciones se inician cuando queremos realizar un conjunto de operaciones y si alguna de ellas falla retornar al estado en el que no se había hecho ninguna.

Hasta el momento no tenemos como saber que algo fallo o fue exitoso, así que solo simularemos que algo fallo en nuestra línea 7, por lo tanto indicamos hacer un ROLLBACK en nuestra línea 8.

La sintaxis es la siguiente:

El BEGIN nos indica donde comienza nuestra transacción, creamos la tabla, insertamos un registro, mostramos todos los registros de la tabla, y luego nuestro ROLLBACK regresa nuestra base de datos al punto en que ni si quiera se había creado la tabla.

Si queremos que los cambios sean permanentes, o si todo “supuestamente hubiese salido bien”, solo sustituimos nuestro ROLLBACK por un COMMIT y la transacción, se cierra.

IMPORTANTE: cada vez que se cierra la conexión con la base de datos se realiza un COMMIT de forma automática y se cierra la transacción. El SQLiteBrowser cada vez que presionamos PLAY inicia una conexión, ejecuta la instrucción y cierra la conexión, por lo tanto, si queremos probar las transacciones en el SQLiteBrowser debemos escribir todas las instrucciones una detrás de otra.

--

--