El desarrollador detrás de Extralite, un envoltorio de SQLite para Ruby, publicó la versión 3.0.0 de la biblioteca, que introduce transformaciones de grafo de objetos, adopta valores predeterminados modernos al abrir bases de datos SQLite y aplica una mejora de seguridad menor. La nueva función principal permite, a partir de una consulta SQL con joins, generar un grafo de objetos anidados que refleja las relaciones entre las entidades devueltas, sin duplicar información en filas distintas. Por ejemplo, una consulta que une posts y autores, o posts y etiquetas, puede convertirse en una estructura de hashes y matrices anidadas con arreglos uno-a-uno, uno-a-muchos o muchos-a-muchos, gracias a un DSL de transformación que admite coerciones de tipo (integer, float, text, boolean, JSON) y la deduplicación mediante mapas de identidad. Bajo el capó, Extralite convierte la especificación en C structs y recorre el árbol mientras procesa cada fila del conjunto de resultados. Además, a partir de 3.0.0 toda base de datos abierta con Extralite usará registro WAL, el pragma synchronous en NORMAL y tendrá activadas las restricciones de claves foráneas, lo que constituye un cambio incompatible respecto a versiones anteriores. Quienes necesiten mantener bases de datos antiguas pueden abrirla en modo legacy. Por último, la carga de extensiones mediante consultas SQL como select load_extension queda deshabilitada; la única vía admitida es el método Database#load_extension. El repositorio y la documentación del proyecto están disponibles en GitHub y rubydoc.info.
Extralite 3.0.0 añade transformaciones de grafo de objetos y adopta valores predeterminados modernos para SQLite
Fuentes:
Extralite 3.0.0 Released
