Motor para Sistemas de Información estilo Pasos de Jesús - msip
Este es un motor diseñado para ser base actualizada de sistemas de información seguros o de otros motores para sistemas de información.
Puedes pensarlo como una capa adicional sobre Ruby on Rails que incluye soluciones estándar, seguras y probadas para más elementos de un sistema de información a diversos niveles:
Vistas e Interfaz:
- Propuesta para administrar modelos con vistas automáticas (no requieren
código) y controladores semiautomáticos vía un generador. Similar a
ActiveAdmin,
Administrate y
Rails Admin
Usa
Msip::Modelo
,Msip::ModelosController
y vistas deapp/views/msip/modelos/
. La vistaindex
incluye un filtro definible conscope
en el modelo. La vista parcial_form
genera automáticamente un formulario con elementos típicos. Consulta https://gitlab.com/pasosdeJesus/msip/-/blob/main/doc/vistas-automaticas.md - Vistas y formularios generados con las herramientas estándar de
rails
ysimple_form
. Listados paginados conwill_paginate
. - Preparado para construir aplicaciones adaptables (responsive) con
bootstrap
,stimulus
y/ocoffescript
yjquery
. Se usa de manera predeterminadatom-select
para cuadros de selección simple y múltiple y el control HTML estándar para campos de fecha. - Incluye biblioteca para operaciones comunes con javascript, por ejemplo para
facilitar actualización automática mediante AJAX (ver
msip_enviarautomatico_formulario
enapp/asset/javascript/msip/motor.js.coffee.erb
que enviará automáticamente formularios cuando cambien campos con claseenviarautomatico
o se presionen enlaces a anclas con esa clase) - Localización con mecanismos estándar de
rails
y detwitter_cldr
. Propuesta para localización de campos tipo fecha(s) (que en español no es bien soportado porrails
) especificando el formato local enconfig.x.formato_fecha
, así como ayudas para definir campos de fecha localizados en ese formato. - Maquetación configurable, viene con dos ejemplos uno con menús horizontales en la parte superior y otro con menús verticales e icónos al lado izquierdo.
- Sistema de temas que permite configurar diversos temas de colores para la interfaz con uno predeterminado y facilidad para que cada usuario elija el suyo.
- Propuesta para administrar modelos con vistas automáticas (no requieren
código) y controladores semiautomáticos vía un generador. Similar a
ActiveAdmin,
Administrate y
Rails Admin
Usa
Modelos:
- Concepto y propuesta de tablas básicas (también llamados tesauros
de la aplicación o parámetros de la aplicación) con
vistas automáticas y controladores y modelos semiautomáticos vía un
generador.
Validación automática de campos
has_many
cuando se borra un registro para reportar si existen registros dependientes en otras tablas (en lugar de fallar)
- Concepto y propuesta de tablas básicas (también llamados tesauros
de la aplicación o parámetros de la aplicación) con
vistas automáticas y controladores y modelos semiautomáticos vía un
generador.
Validación automática de campos
Componentes ampliables (i.e modelos, controladores, vistas)
- Modelos y controladores básicos con diversos propósitos y fácilmente
ampliables o modificables con herencia o con
ActiveSupport::Concern
para aplicaciones más complejas. - Componente para ubicaciones geográficas
msip_pais
,msip_departamento
,msip_municipio
,msip_centropoblado
para centros poblados),msip_tcentropoblado
(tipos de centros poblados),msip_tsitio
(tipo de sitio) ymsip_ubicacion
. Con datos de todos los países, aunque estados y municipios completos para Colombia, Venezuela y Honduras y ciudades completas para Colombia de acuerdo a DIVIPOLA 2022 con actualización periódica (vía migraciones derails
) de acuerdo a esa fuente oficial.- Siluetas en SVG de los mapas de departamentos y municipios de Colombia con coordenadas listas para su composición. Convertidas de OpenStreetMap y actualizadas con periodicidad.
- Componente para personas y relaciones entre personas
msip_persona
,msip_trelacion
(tipo de relación entre personas),tdocumento
(tipo de documento de identificación personal),msip_persona_trelacion
(relación entre 2 personas). - Componente para grupos de personas
msip_grupoper
, organizaciones socialesmsip_orgsocial
(así llamamos a un grupo de personas que se ponen de acuerdo para un objetivo o representación conjunta), sus sectoresmsip_sectororgsocial
y la relación entre una persona y una organización social con su perfilmsip_orgsocial_persona
ymsip_perfilorgsocial
- Componente para anexos con tabla
msip_anexo
y vistas incrustables y gemakt-paperclip
- Propuesta de respaldo cifrado y comprimido con
7z
por parte de usuario final (del rol que se configure) desde menús de la aplicación.
- Modelos y controladores básicos con diversos propósitos y fácilmente
ampliables o modificables con herencia o con
Control de Acceso
- Propuesta inicial para control de acceso con:
- Autenticación con tabla
usuario
(modelo::Usuario
), gemadevise
y cifradobcrypt
- Autorización muy configurable con gema
cancancan
que puede valerse de roles (inicialmente sólo Administrador y Operador) o grupos (implementados en tablasmsip_grupo
--modeloMsip::Grupo
--, ymsip_grupo_usuario
), o en otras tablas o métodos que elija.
Facilidades para desarrollar y configurar aplicaciones que usen este motor:
- Variables de ambiente en un archivo
.env
y la gemadotenv
. - Con variables de configuración de rails en el espacio de
nombres
config.x
, - Con variables de configuración en
config/initializers/msip.rb
(por ejemplo país por omisión enMsip.paisomision
). - La inicialización de este motor (
lib/msip/engine.rb
) incluye automáticamente migraciones de motores en la aplicación final. - Tareas
rake
para actualizar indices y sacar copia de respaldo de base de datos
- Variables de ambiente en un archivo
Pruebas:
- Pruebas con
minitest
- Pruebas con
Pila actualizada
- Desarrollado en simultaneo con adJ (distribución de
OpenBSD) y modificado para operar siempre sobre las nuevas versiones
de adJ que se actualizan cada 6 meses para incluir:
sistema operativo más reciente, motor de base de datos más reciente,
Ruby reciente, librerías y gemas más recientes. Probado de manera
continua en Linux (vía integración continúa con gitlab-ci).
- Busca promover gemas recienten que faciliten el desarrollo del resto de la aplicación a nivel de interfaz e internacionalización y proveer ayudas para actualizar --por lo menos documentación en el directorio doc y guías de actualización en el wiki.
- Busca mantener actualizada la información geográfica respecto al DIVIPOLA colombiano y OpenStreetMap
- Desarrollado en simultaneo con adJ (distribución de
OpenBSD) y modificado para operar siempre sobre las nuevas versiones
de adJ que se actualizan cada 6 meses para incluir:
sistema operativo más reciente, motor de base de datos más reciente,
Ruby reciente, librerías y gemas más recientes. Probado de manera
continua en Linux (vía integración continúa con gitlab-ci).
Requisitos
Ver https://gitlab.com/pasosdeJesus/msip/blob/main/doc/requisitos.md
Aplicación mínima incluida en msip
msip ya viene con una aplicación mínima (en el directorio test/dummy
)
que es la usada para hacer pruebas de regresión. Es una aplicación completa
con diseño web adaptable, autenticación, manejo de clave con condensado
bcrypt
, usuarios, grupos, vistas completas para tablas básicas y para
modelos persona y organización social. Incluso antes de intentar
iniciar una aplicación aparte, puede intentar ejecutar esa aplicación mínima,
siguiendo las instrucciones de:
https://gitlab.com/pasosdeJesus/msip/blob/main/doc/aplicacion-de-prueba.md
Iniciar un sistema de información usando msip
Ver https://gitlab.com/pasosdeJesus/msip/blob/main/doc/iniciar-si-usando-msip.md
Resto de la documentación
Después de tener tu primer ejemplo puedes generar tablas básicas para
tu aplicación, personalizar los modelos, vistas y controladores que msip
ofrece. Puedes consultar:
- Guías para varias operaciones usuales: https://gitlab.com/pasosdeJesus/msip/blob/main/doc/README.md
- Documentación de las fuentes de msip en: https://rubydoc.info/github/pasosdeJesus/msip/
Reportar fallas
Si algo no opera como se espera puedes abrir un incidente en https://gitlab.com/pasosdeJesus/msip/-/issues