-
-
Notifications
You must be signed in to change notification settings - Fork 8
2022_02 Uso de: (1) controladores stimulus de motores, (2) foreman y (3) recarga viva en navegador
Suponemos que tiene una aplicación rails 7 que usa esbuild
para construir fuentes javascript
de app/javascript/
con punto de entrada app/javascript/application.js
para dejarlas en app/assets/build
.
También suponemos que en su aplicación usa stimulus
reciente y que lo instaló con
bin/rails stimullus:install
por lo que tiene:
-
stimulus-rails
en suGemfile
. - Un directorio
app/javascript/controllers
que incluye los archivos:index.js
(que carga los controladores existentes) y
app/javascript/controllers/application.js
que inicializa Stimulus. - Que el punto de entrada principal
app/javascript/application.js
incluye los controladores Stimulus mediante:
import './controllers'
Finalmente suponemos que el o los motores con controladores stimulus que va a usar definen esos
controladores en app/javascript/controllers
Dado esto, para usar los controladores stimulus de los motores de una aplicación:
-
Actualizar a sip reciente y ejecutar
bin/rails sip:stimulus_motores
Se trata de una tarearake
que enlazará simbólicamente los directoriosapp/javascript/controllers
de cada motor usado por la aplicación enapp/javascript/controllers
de la aplicación (cada uno en un directorio con el nombre del motor) y después ejecutará la tareastimulus:manifest:udpate
que regenerará el archivoapp/javascript/controllers/index.js
referenciando los controladores de la aplicación y de los motores. Así un controlador del motorsip
de nombremi-controlador
serásip--mi-controlador
. Recomendamos que en.gitignore
agregue cada directorio enlazado enapp/javascript/controllers
-
esbuild
podrá operar con estos controladores siempre que al compilar se use la opción--preserve-symlinks
. Por eso si hace falta edite su archivopackage.json
y cambie la tareabuild
para agregarla. i.e:"scripts": { "build": "esbuild app/javascript/*.* --preserve-symlinks --bundle --sourcemap --outdir=app/assets/builds" }
En su archivo .env agregue
if (test "$MAQRECVIVA" = "") then { # Recarga viva
 export MAQRECVIVA="192.168.10.1"
} fi;
if (test "$PUERTORECVIVA" = "") then { # Puerto para recarga viva
export PUERTORECVIVA=4500
} fi;
Copie en el mismo directorio de package.json
el script esbuild-des.config.js
así:
ftp https://raw.githubusercontent.com/pasosdeJesus/sip/main/test/dummy/esbuild-des.config.js
Este script se basa en el de https://www.colby.so/posts/live-reloading-with-esbuild-and-rails y lo que hace es:
- Ejecutará un servidor web en el puerto
PUERTORECVIVA
del computadorMAQRECVIVA
para enviar notificaciones a los clientes que se conecten cada vez que se complete una construycción de fuentes. - Ejecutará
esbuild
en modo observación (del inglés watch, que recompila fuentes cada vez que nota un cambio en las mismas en el sistema de archivos) y a cada empaquetado que produce la agrega un "pie de página" para conectarse con el servidor web y hacer que el navegador recargue la página cada vez que reciba una notificación de compilación completada.
foreman es muy útil para tener simultaneamente un proceso para la recompilación de las fuentes javascript y otro con la aplicación rails corriendo, los mensajes que cada uno produzca irán precedidos de un color distintivo.
Instalelo con
doas gem install foreman
Para su operación requiere un archivo Procfile con el siguiente contenido:
rails: R=f bin/corre
js: (. .env && yarn start --watch )
Debe modificarse package.json
para agregar en la sección scripts:
"start": "node esbuild-des.config.js"
Y bin/corre
también debe modificarse para usar foreman. Puede copiar el de https://github.com/pasosdeJesus/sip/blob/main/test/dummy/bin/corre con:
ftp -o bin/corre https://raw.githubusercontent.com/pasosdeJesus/sip/main/test/dummy/bin/corre
Su uso se resume a continuación.
Orden | Instala dependencias | Borra compilaciones y recompila | Inicia esbuild y rails con foreman |
---|---|---|---|
bin/corre |
Si | Si | Si |
R=r bin/corre |
Si | Si | |
R=1 bin/corre |
Si | ||
R=f bin/corre |
Solo rails sin foreman |
Desarrollado por Pasos de Jesús. Dominio público de acuerdo a legislación colombiana. Agradecemos financiación para personalizaciones de dominio público a diversas organizaciones, ver https://github.com/pasosdeJesus/sivel2/blob/master/CREDITOS.md
- Validación de etiquetas de Colombia y sus departamentos entre OSM de Sep.2022 y DIVIPOLA 2022
- Actualización a DIVIPOLA 2022-07 y Resumen ejecutivo de la actualización a DIVIPOLA 2022-07
- Actualización a DIVIPOLA 2021 y Resumen ejecutivo de la actualización a DIVIPOLA 2021
- Actualización a Rails 7
- Actualización a DIVIPOLA 2020 y Resumen ejecutivo de la actualización a DIVIPOLA 2020
- Extensiones para Chomium útiles para desarrollo
- Actualización de sip 2.0b11 a 2.0b12
- Actualización de sip 2.0b10 a 2.0b11
- Actualización de Rails 6.0 a Rails 6.1
- Resumen ejecutivo de la actualización a DIVIPOLA 2019
- Actualización a DIVIPOLA 2019
- Actualización-de-sip-2.0b6-a-sip-2.0b7
- Pasando de sprockets a webpacker con Rails 6
- Actualización a Rails 6 en 6 pasos
- Actualización a DIVIPOLA 2018
- Actualización de Rails 5.1 a Rails 5.2
- Actualizando a Rails 5
- Actualización a PostgreSQL posterior a 10.2