Pour un rendu optimal, activez JavaScript

đŸ‡«đŸ‡· ♊ [Geminocks] AmĂ©liorez votre jeu Rails avec Cloud Run : une plongĂ©e en profondeur dans Qwiklabs

 Â·  ☕ 5 min de lecture  Â·  💛 Riccardo Carlesso

(Article original sur Medium)

Connaissez-vous Cloud Skills Boost (anciennement connu sous le nom de Qwiklabs) ?

Vidéo de Riccardo sur Youtube

Dans cette vidéo, je vous guide à travers les étapes décrites dans Ruby on Rails avec PostgreSQL sur Cloud Run sur le site Web de cloudskillsboost, en rencontrant quelques obstacles en cours de route, et en les corrigeant.

De plus, je vais vous prĂ©senter ma chaĂźne d’outils particuliĂšre et personnelle, en tant qu’ancien dĂ©veloppeur bash/perl, elle pourrait donc vous paraĂźtre particuliĂšre.

Si vous ĂȘtes impatient de commencer, voici mon code final sur GitHub lien vers le code et le Codelab RoR lien vers le codelab.

Voici ma vidéo sur Rails !

À propos de Skillsboost

Skillsboost (anciennement connu sous le nom de Qwiklabs) est un moyen de vous former Ă  Google Cloud en exĂ©cutant des “labs”. Ces labs sont limitĂ©s dans le temps, Google crĂ©e toutes les ressources pour vous et les supprime Ă  la fin du lab.

Pour rĂ©aliser les labs, vous disposez d’un systĂšme de crĂ©dits. Vous pouvez payer en $$ pour les obtenir, ou vous pouvez en obtenir gratuitement en vous inscrivant simplement Ă  notre programme Innovator Champion (oui, entiĂšrement gratuit !). Cela devrait vous permettre de rĂ©aliser environ 10 labs gratuitement, Ă©galement avec Gemini (je les ai essayĂ©s, ils sont trĂšs amusants !).

Notre Codelab se trouve ici : https://www.cloudskillsboost.google/focuses/20047

L’approche de Riccardo pour Skillsboost

Il existe plusieurs façons d’exĂ©cuter un Lab, mais j’en vois principalement deux :

  1. Vous exĂ©cutez le code dans le Cloud. C’est la mĂ©thode la plus simple, celle que tout le monde utilise. Vous utilisez une combinaison de Cloud Shell et de Cloud Editor (si vim ne vous convient pas).
  2. Vous exĂ©cutez le code localement. C’est un peu plus difficile Ă  mettre en place, mais vous pouvez ensuite conserver tout votre code utile localement pour une utilisation/un piratage ultĂ©rieur. J’ai passĂ© quelques annĂ©es Ă  Ă©crire une chaĂźne d’outils pour cela, en utilisant codelabba et proceed_if_error_matches et d’autres. Comme vous pouvez l’imaginer, je pense ĂȘtre le seul terrien Ă  conserver mes scripts codelab quelque part localement. Suis-je en bonne compagnie ? Contactez-moi et dites-moi ce que vous faites diffĂ©remment !

Comme vous pouvez le voir dans ma vidéo, je fais les deux pour vous montrer les deux approches, avec leurs avantages et leurs inconvénients.

Qu’est-ce qu’un journal de friction ?

Un journal de friction est un document Google Doc dans lequel vous dĂ©crivez par Ă©crit votre expĂ©rience, vos Ă©motions et mĂȘme votre niveau de colĂšre (Ă  l’aide de codes couleurs) au dĂ©veloppeur d’un code/de ressources. L’idĂ©e est ensuite de partager votre document avec l’implĂ©menteur, en y suivant les bogues du code et du document. Mon idĂ©e folle est d’en faire une vidĂ©o !

Ma chaüne d’outils “codelabba”

Le moment est venu d’expliquer ma chaĂźne d’outils personnelle. Habituellement, j’ai un certain nombre de dĂ©pĂŽts git sous ~/git/, l’un d’eux Ă©tant Open Source. Bien sĂ»r, je parle de palladius/sakura.

  • 00-init.sh : Le script d’initialisation, commun Ă  tous mes projets codelabba, il fait rĂ©fĂ©rence Ă  des variables d’environnement comme PROJECT_ID, REGION et ainsi de suite.

  • .envrc : Ce fichier est alimentĂ© par direnv, un outil que m’a suggĂ©rĂ© Rob Edwards et il contient toutes mes variables d’environnement. Vous pouvez le considĂ©rer comme la partie hydratation du 00-init et de tout le reste, grĂące aux bibliothĂšques Ruby/Python pour gĂ©rer les fichiers .env*. J’ai Ă©galement fait un effort pour que ce fichier fonctionne immĂ©diatement avec Pulumi (en adoptant les noms de variables d’environnement standard de Pulumi) et pour qu’il soit aussi compatible que possible avec les codelabs de Google Cloud.

  • proceed_if_error_matches : C’est le script le plus simple et le plus intelligent que j’aie jamais Ă©crit. Il transforme les scripts bash sĂ©quentiels avec set -euo pipefail en scripts bash ressemblant Ă  Terraform. Imaginez que vous ayez besoin de : (1) crĂ©er un bucket (2) dĂ©finir une LCA sur celui-ci (3) tĂ©lĂ©charger des fichiers sur celui-ci. Il est raisonnable de penser que vous avez trois scripts sĂ©quentiels, qui peuvent Ă©chouer de temps en temps et il vous faut du temps pour corriger chaque ligne. Une fois que vous avez terminĂ©, vous voulez passer Ă  la suivante, mais devinez quoi ? Vous ne pouvez pas travailler sur (2) car (1) va commencer Ă  Ă©chouer avec un message agaçant du genre “le bucket existe dĂ©jà”. J’ai donc pensĂ© : et si je pouvais filtrer UNIQUEMENT certains messages d’erreur, que je capture sous forme de chaĂźnes de caractĂšres ? C’est la raison d’ĂȘtre de ce fichier.

  • codelabba.rb (propriĂ©taire) Il s’agit d’un script ruby que je n’ai jamais publiĂ© publiquement. Mais demandez-moi dans les commentaires, et je prendrai peut-ĂȘtre le temps de le nettoyer et de le publier en open source. Il crĂ©e essentiellement un squelette pour mes codelabs, et je l’ai inventĂ© la 2Ăšme ou 3Ăšme fois que je faisais un codelab Qwiklab, exactement pour les raisons que j’ai Ă©crites ci-dessus.

  • XX-blah-blah.sh (exemple) Ce sont des scripts Ă  exĂ©cuter dans l’ordre : 01, 02, 03, 
 afin qu’ils vous racontent une histoire. Voyez cela comme un “notebook python Bash”. Je sais, c’est la phrase la plus profonde que vous allez lire aujourd’hui :)

Code : https://github.com/palladius/20240809-qwiklab-rails-on-gcp

Conclusions

C’est une grande expĂ©rience pour moi ! Était-ce une bonne idĂ©e ? Une idĂ©e terrible ? Faites-le moi savoir dans les commentaires !

(Generated by Geminocks: https://github.com/palladius/ricc.rocks/tree/main/gemini prompt_version=1.4)


title: “[TODO] [fr] Level Up Your Rails Game with Cloud Run: A Qwiklabs Deep Dive”
date: 2024-08-15
layout: single
author: Riccardo Carlesso
read_time: 3
Tags:

Generated by Geminock v.1.9 - matter_hash_to_str()

Note this operation might have removed all previous comments. Sorry.

If Riccardo wants to edit this, code is in: /Users/ricc/git/ricc.rocks/gemini/lib/gemini/translator.rb


Partagez

Riccardo
RÉDIGÉ PAR
Riccardo Carlesso
Developer Advocate, Google Cloud