Storext es una gema de Ruby diseñada para enriquecer la funcionalidad de ActiveRecord::Store, ofreciendo capacidades mejoradas de conversión de tipos y extensibilidad. No es una aplicación independiente con un archivo de inicio o configuración centralizada, sino una biblioteca que se integra en aplicaciones Rails existentes.
Integración y Configuración en Aplicaciones Rails
Para utilizar Storext, primero debes añadirlo a tu archivo Gemfile:
# Gemfile
gem 'storext'
Después de añadir la gema, ejecuta bundle install para instalarla y hacerla disponible en tu aplicación.
La configuración de Storext se realiza directamente dentro de tus modelos de ActiveRecord. No requiere archivos de configuración externos. En su lugar, se activa incluyendo el módulo Storext.model en la clase del modelo y definiendo los atributos que se almacenarán en el campo JSON o HSTORE utilizando el método store_attributes.
Aquí tienes un ejemplo de cómo configurar Storext en un modelo llamado Product:
class Product < ActiveRecord::Base
# Incluye el módulo Storext para habilitar sus funcionalidades
include Storext.model
# Define los atributos que se almacenarán en el campo 'details' (asumiendo que 'details' es un campo de tipo JSON o JSONB)
store_attributes :details do
# Define el atributo 'name' como String
name String
# Define el atributo 'price' como un Float, con un valor por defecto de 0.0
price Float, default: 0.0
# Define el atributo 'is_available' como un Booleano, con un valor por defecto de true
is_available Boolean, default: true
# Define el atributo 'tags' como un Array de Strings
tags Array, default: []
end
end
En este ejemplo:
include Storext.modelhabilita las características de Storext para la claseProduct.store_attributes :details do ... endespecifica que los atributos definidos dentro del bloque se almacenarán serializados en la columna de la base de datos llamadadetails. Esta columna debe ser de un tipo compatible, comojsonbohstore, y configurarse a través de migraciones de Rails.- Dentro del bloque, se definen los atributos con sus tipos esperados (
String,Float,Boolean,Array) y se pueden asignar valores por defecto. Storext se encargará de la conversión de tipos y la serialización/deserialización al interactuar con la base de datos.
La estructura del proyecto de Storext sigue las convenciones estándar de una gema de Ruby, con el código fuente principal ubicado en el directorio lib/. Los tests se encuentran en el directorio spec/. La configuración específica de la base de datos, como el tipo de columna (jsonb o hstore) y el nombre de la columna, se define en las migraciones de la aplicación Rails donde se utiliza Storext, no dentro de la gema misma.