Índice:
La última versión de aile, la v2.0.0
por fin está lista para ser publicada en los paquetes de Go. Es un cambio de
versión mayor, por lo que, necesitarás una rama staging o similar donde probar
la compatibilidad con tus programas antes de actualizar la biblioteca.
☍ Instalación
Para instalar la última versión de aile ejecuta el siguiente comando en la
raíz del proyecto donde estarás trabajando:
$ go get -u codeberg.org/urutau-ltd/aile/v2
Vamos a ver un listado de cambios introducidos en esta nueva versión.
☍ GNU/GUIX es ahora ciudadano de primera clase
aile ahora maneja un flujo de trabajo de desarrollo 100% adaptado a GNU Guix.
Si deseas contribuir se espera que tengas instalado el gestor de paquetes
guix ya sea en tu distribución GNU/Linux favorita o en
la forma de Guix System.
Para crear un entorno de desarrollo puedes ejecutar:
$ make guix-env
Si deseas probar si la biblioteca compila y es distribuible de forma reproducible, puedes ejecutar:
$ make guix-test
Todo el desarrollo se lleva bajo la última versión de Go que esté disponible en Guix. Por lo que la última versión de Go podría tardar uno o dos meses en actualizarse a la misma disponible en Go.
El flujo de trabajo para desarrollo lo puedes encontrar en el repositorio de la herramienta.
☍ Rutas de importación
La biblioteca ahora tiene una ruta de importación nueva, deberás actualizar la
cadena de import en tu proyecto de Go. Todos los imports mantienen el mismo
patrón por lo que, puedes actualizar de manera trivial con sed o awk si te
lo propones.
import "codeberg.org/urutau-ltd/aile/v2"
// Lo mismo para módulos extras
import requestid "codeberg.org/urutau-ltd/aile/v2/x/request_id"
import secureheaders "codeberg.org/urutau-ltd/aile/v2/x/secure_headers"
☍ Se eliminaron los handlers con patrones "en crudo".
El API que exponía App.Handle y App.HandleFunc se ha eliminado de esta
versión de la biblioteca:
// v1.x
app.HandleFunc("GET /users/{id}", getUser)
app.HandleFunc("POST /users", createUser)
// v2.x
app.GET("/users/{id}", getUser)
app.POST("/users", createUser)
Esto hace explícita la declaración de rutas, es compatible con los patrones
soportados por net/http -> http.ServeMux.
☍ Helper de estáticos
Si lo necesitas, la v2.0.0 de Aile ahora tiene un helper para que puedas
servir archivos estáticos, sea de un directorio local o de un embed.FS:
if err := app.Static("/assets", assetsFS); err != nil {
log.Fatal(err)
}
Para mantener la compatiblidad, si no deseas usar App, puedes usar el handler
de forma independiente:
h, err := aile.StaticHandler("/assets/", assetsFS)
Ambas utilidades son wrappers alrededor de http.FileServerFS y
http.StripPrefix
☍ Errores solucionados
Algunos errores presentes en la v1.X fueron corregidos en la v.2.0.0:
ServeyRunahora se comportan de forma adecuada al hacer unshutdownagraciado del servidorServecierra el listener si los hooks de inicio fallanx/combinetenía un fallo donde el middleware se perdíax/compressahora funciona correctamente
Pronto estaremos compartiendo una publicación como puedes hacer un stack
sencillo con aile y otras herramientas para crear aplicaciones web fullstack,
todo de una forma minimalista y veloz.
¡Gracias por leer el blog de Urutaú Limited! 💜🦉