Your Next Meal : une Guile Web App
Je me suis lancé dans le développement d'une application web en Guile. Le but de cette application est de m'aider à choisir le contenu de mes repas en fonction de mes goûts, de mon style de vie et mon équilibre nutritionnel ! Si je consomme mieux, ma santé et la planète ne pourront qu'en bénéficier.
Dans cet article, je partage avec vous mon workflow du moment !
Meilleurs voeux à tous·tes !
Développement
J'ouvre mon terminal. À l'aide d'un alias, la commande cdynm
me place dans le répertoire de mon application.
Puisque j'ai créé la définition du paquet de mon application (dans un fichier que j'ai nommé guix.scm
), je peux générer un shell préparé pour son propre développement avec la commande :
$ guix environment -l guix.scm
À présent, je peux démarrer le serveur via la commande :
[dev]$ art work
Loading conf/artanis.conf...done.
Session with SIMPLE backend init done!
Loading models...
Loading controllers...
Loading restful API...
Regenerating route cache ...
Server core: ragnarok
http://127.0.0.1:3000
Anytime you want to quit just try Ctrl+C, thanks!
Puis place au hack !
N'ayant pas encore trouvé de moyen de faire du REPL Driven Development, j'ai pris l'habitude de redémarrer manuellement le serveur à chaque modification. Le redémarrage est rapide pour l'instant mais cela peut devenir gênant le cas échéant.
Lorsque je suis satisfait de mes modifications, je pousse les changements vers le dépôt git.
Déploiement
J'administre un droplet Digital Ocean sous Guix System. Je m'y connecte en ssh grâce à un petit alias sshynm
. Puis je me rattache à la session Screen active dans laquelle s'exécute mon application :
$ screen -r
De là, je stop l'application, je pull les derniers changements dans le code source de l'application et je la redémarre :
# killall .art-real && git pull && guix environment -l guix.scm -- art work &
Enfin, je me détache de la session Screen avec C-a d
ou C-a C-d
et du droplet avec C-d
.
Fin !
Ma liste de souhait
Guile-Hall support
En attendant la prochaine release de Guile-Hall, il n'est pas possible de gérer une application créé avec Artanis car certains types de fichiers ne sont pas supportés par Guile-Hall.
Guix full support
Aujourd'hui, Artanis repose sur Guile-2.2 ainsi que sur des bibliothèques dont les versions sont en conflit avec la distribution de Guix (guile-json par exemple). Pour mon usage, le contournement via un environnement de développement me suffit mais ça pourrait ne pas durer !
Lien vers le dépôt du projet : https://framagit.org/Jeko/ynm
Lien vers le site du projet : https://yournextmeal.tech
Merci beaucoup d'avoir lu cet article !
N'hésites pas à me donner ton avis, proposer une idée d'amélioration, ou poser une question ! Pour ce faire, laisses un commentaire plus bas ou contactes-moi
Abonnes-toi pour ne pas manquer les prochains :
– articles via Mastodon @jeko@write.as et RSS
– screencasts via Peertube jeko@video.tedomum.net et RSS
Et encore plus important, partages ce blog et dis à tes amis que c'est le meilleur blog de l'histoire du logiciel libre ! Sans dec'