
Dans son palais d’Alexandrie, Cléopâtre était préoccupée. Les scribes traditionnels peinaient à interpréter les visions des étoiles gravées sur des tablettes cybernétiques, provenant de la Pyramide Noire.
Elle convoqua Philopator, le scribe le plus ingénieux, et lui dit :
— Nous devons concevoir un nouveau langage qui parle aussi clairement aux
machines qu’aux hommes. Un langage élégant, simple, mais puissant. Que
proposes-tu ?
Philopator réfléchit et dit :
— Majesté, permettez-moi de vous enseigner le langage Ruby, qui correspond
à votre raffinement et à votre quête d’efficacité.
Cléopâtre, intriguée, lui fit signe de commencer.
Philopator écrivit sur la tablette :
puts "Salut, Égyptiens ! Bienvenue à Alexandrie !"
Cléopâtre lut à voix haute :
— Puts, une simple incantation pour afficher des mots ?
Philopator expliqua :
— Oui, majesté. puts signifie "output string" (afficher une chaîne). En
prononçant cette commande, la tablette affiche instantanément le message.
Elle tenta :
puts "Je suis Cléopâtre, reine d'Égypte !"
Le message s’afficha comme prévu.
— Fascinant, murmura-t-elle. Continuons.
Philopator poursuivit :
— Majesté, imaginez des coffres où l'on peut stocker des valeurs. Ces coffres
sont appelés variables.
Il écrivit :
nom = "Cléopâtre" royaume = "Égypte" age = 39
— Ici, nous avons stocké votre nom, votre royaume, et même votre âge.
Pour utiliser ces trésors, il suffit de les appeler :
puts "Je suis #{nom}, reine de #{royaume}, âgée de #{age} ans."
Cléopâtre sourit :
— Ah, la magie des accolades ! Cela rend les mots vivants.
Philopator expliqua ensuite les conditions :
— Pour régner, vous devez parfois prendre des décisions. Ruby permet cela avec
des conditions.
Il démontra :
siège_assiégé = true if siège_assiégé puts "Préparez l'armée et fortifiez le palais !" else puts "Organisez un banquet pour le peuple." end
Cléopâtre testa une variante :
siège_assiégé = false if siège_assiégé puts "La guerre est inévitable." else puts "Le peuple d'Égypte est en paix." end
Elle observa la tablette afficher le message de paix.
— Ruby, comme moi, fait preuve de logique et de grâce, dit-elle.
Philopator montra comment automatiser les rituels répétés :
3.times do puts "Gloire à Cléopâtre !" end
Cléopâtre déclara :
— Avec ces boucles, nous pourrons inscrire des prières éternelles sur les murs
de nos temples numériques.
Philopator poursuivit avec les collections :
— Imaginez un parchemin contenant plusieurs noms. Nous utilisons un
tableau.
généraux = ["Antoine", "Pothinos", "Apollodore"] généraux.each do |nom| puts "#{nom} est un fidèle serviteur." end
Cléopâtre observa chaque nom apparaître sur la tablette et hocha la tête.
— Un trésor sans fin, cette connaissance.

Alors que Cléopâtre continuait d'apprendre Ruby, elle réalisa que ce langage était plus qu’un simple outil : c’était une clé pour comprendre la Pyramide Noire et son cyber-biome. Elle décréta que tous ses scribes maîtriseraient Ruby, pour que l'Égypte brille non seulement dans le passé, mais aussi dans l'éternité numérique.
Au cours d'une nuit étoilée, dans la bibliothèque du palais, Cléopâtre,
fascinée, demanda :
— Philopator, cette magie me plaît. Mais comment puis-je organiser encore mieux
ces incantations pour qu'elles soient utilisées par tous mes scribes ?
Philopator répondit :
— Majesté, nous devons parler des classes. Imaginez-les comme des modèles,
des architectures divines pour structurer vos idées.
Il prit un calame et écrivit :
class Scribe def initialize(nom, spécialité) @nom = nom @spécialité = spécialité end def présenter puts "Je suis #{@nom}, spécialiste en #{@spécialité}." end end
— initialize est comme un rituel de création, expliqua Philopator. À chaque
invocation, une nouvelle entité naît avec les attributs que vous définissez.
Cléopâtre demanda, curieuse :
— Montrez-moi ce modèle en action.
Philopator continua :
scribe1 = Scribe.new("Thothmes", "cartographie") scribe2 = Scribe.new("Isidore", "astronomie") scribe1.présenter scribe2.présenter
La tablette afficha :
Je suis Thothmes, spécialiste en cartographie. Je suis Isidore, spécialiste en astronomie.
Cléopâtre sourit :
— Avec de tels modèles, je pourrais créer des légions de scribes numériques !
Philopator poursuivit :
— Les classes sont puissantes, mais parfois, il faut partager des incantations
entre plusieurs modèles. C’est là qu’interviennent les modules.
Il expliqua :
— Imaginez un module comme une bibliothèque de sorts que plusieurs classes
peuvent invoquer.
Il écrivit sur la tablette :
module ÉcritureSacrée def écrire(message) puts "Gravé dans le granit sacré : #{message}" end end class Prêtre include ÉcritureSacrée end class Architecte include ÉcritureSacrée end
Philopator fit une démonstration :
prêtre = Prêtre.new prêtre.écrire("Offrande au temple de Râ.") architecte = Architecte.new architecte.écrire("Conception de la grande obélisque.")
La tablette grava les messages. Cléopâtre s’exclama :
— Ce langage est un véritable trésor. Modules et classes, comme prêtres et
architectes, coopèrent pour bâtir mon empire.
Une question surgit dans l'esprit de Cléopâtre :
— Si un nouveau prêtre venait à exister, partageant les rituels des anciens,
comment les transmettre sans tout réécrire ?
Philopator répondit avec enthousiasme :
— C’est ce que l’on appelle l’héritage. Une classe peut hériter des
pouvoirs d’une autre. Regardez.
Il montra :
class Sage def méditer puts "Plongé dans une profonde méditation." end end class GrandPrêtre < Sage def bénir puts "Invocation des bénédictions divines." end end prêtre = GrandPrêtre.new prêtre.méditer prêtre.bénir
Sur la tablette apparut :
Plongé dans une profonde méditation. Invocation des bénédictions divines.
Cléopâtre déclara, ravie :
— Le savoir des anciens peut ainsi traverser les âges, sans perte ni confusion.
Cléopâtre, désormais maître des bases de Ruby, se sentait prête à explorer
davantage.
— Et maintenant, Philopator, que nous réserve encore ce langage ?
Philopator répondit :
— Majesté, il reste tant à découvrir : les joyaux cachés des gemmes, les
puissantes incantations des blocs, et les secrets des expressions
régulières pour manipuler les mots comme jamais.
Dans la salle des trésors d’Alexandrie, Cléopâtre demanda à Philopator :
— Parlez-moi des gemmes dont vous avez fait mention. Je suppose qu’il ne s’agit
pas de simples bijoux ?
Philopator sourit.
— Non, majesté. Les gemmes, dans Ruby, sont des bibliothèques de pouvoir. Elles
contiennent des sorts tout prêts, créés par d’autres sages, que nous pouvons
invoquer pour enrichir nos capacités.
Cléopâtre, curieuse, demanda un exemple. Philopator s’exécuta :
# Installation d'une gemme # Cela se fait en invoquant le commandeur extérieur : # gem install colorize require 'colorize' puts "Bienvenue à Alexandrie".colorize(:blue) puts "Gloire à Cléopâtre !".colorize(:yellow)
La tablette afficha un texte en couleurs éclatantes. Cléopâtre s’exclama :
— Magnifique ! Les mots eux-mêmes s’animent. Ces gemmes sont des cadeaux des
dieux.
Philopator expliqua :
— Les gemmes peuvent accomplir bien plus. Qu’il s’agisse de décrypter des
messages, de construire des machines ou de créer des portails vers d’autres
mondes, leur pouvoir est infini. Vous n’avez qu’à les invoquer.
Un jour, en méditant sur la simplification des rituels complexes, Cléopâtre
demanda :
— Peut-on encapsuler des sorts répétitifs dans une forme élégante ?
Philopator répondit :
— Oui, grâce aux blocs. Ces blocs permettent de transmettre des
instructions répétitives en toute fluidité.
Il inscrivit sur la tablette :
3.times do |i| puts "Invocation #{i + 1} : Gloire à Cléopâtre !" end
Le message apparut :
Invocation 1 : Gloire à Cléopâtre ! Invocation 2 : Gloire à Cléopâtre ! Invocation 3 : Gloire à Cléopâtre !
Philopator poursuivit :
— Un bloc peut également être passé à une méthode pour personnaliser son
fonctionnement.
def exécuter_sortilège puts "Préparation du sortilège..." yield if block_given? puts "Sortilège exécuté." end exécuter_sortilège do puts "Un message secret apparaît : ‘La Pyramide Noire attend.’" end
Cléopâtre lut, intriguée :
— Ainsi, je peux transmettre des incantations spécifiques, tout en gardant la
structure générale ? Ce langage est décidément fait pour des stratèges.
Dans le grand temple d’Hermès, Cléopâtre s’interrogea :
— Parfois, les tablettes gravées contiennent des messages cachés ou codés. Ruby
peut-il m’aider à les manipuler ?
Philopator répondit avec gravité :
— Majesté, nous entrons dans le domaine des expressions régulières. Ces
outils sont des clés pour déchiffrer et remodeler les mots.
Il démontra :
message = "Les étoiles brillent sur la Pyramide Noire." if message =~ /Pyramide Noire/ puts "Un secret est mentionné dans ce texte." end texte_modifié = message.gsub(/étoiles/, "soleils") puts texte_modifié
Le résultat fut :
Un secret est mentionné dans ce texte. Les soleils brillent sur la Pyramide Noire.
Cléopâtre comprit l’importance de ces outils.
— Chaque mot peut être sculpté comme un bloc de granit. Ruby me donne le
pouvoir de réécrire l’univers.
Cléopâtre s’assit, pensive, entourée de scribes.
— Philopator, ce langage est magnifique. Mais pourquoi m’enseigner Ruby ?
Philopator hésita un instant, puis répondit :
— Majesté, la Pyramide Noire recèle un noyau cybernétique. Ses secrets sont
protégés par un langage semblable à Ruby. Si vous en maîtrisez chaque facette,
vous pourrez non seulement comprendre cette structure, mais aussi la contrôler.
Cléopâtre se redressa, une lueur de défi dans les yeux.
— Alors, Philopator, continuons. Ensemble, nous ouvrirons les portes de ce
mystère.
Dans une salle ornée des fresques des anciens dieux, Cléopâtre méditait sur les
risques d’un échec face aux mystères de la Pyramide Noire.
— Philopator, si une erreur survient dans mes incantations, Ruby peut-il
m’aider à surmonter ces obstacles ?
Philopator, debout à ses côtés, répondit :
— Majesté, Ruby est conçu pour être résilient. Avec une structure appelée
gestion des exceptions, nous pouvons prévoir les erreurs et réagir
intelligemment.
Il écrivit sur une tablette brillante :
begin résultat = 10 / 0 puts "Le résultat est #{résultat}." rescue ZeroDivisionError puts "Une division par zéro est impossible. Choisissez une autre formule." end
Cléopâtre lut le message affiché :
Une division par zéro est impossible. Choisissez une autre formule.
— Fascinant, dit-elle. Ce langage peut s’adapter à l’imprévu comme un stratège au combat.
Philopator ajouta :
— Nous pouvons même capturer toutes sortes d’erreurs :
begin données = File.read("tablette_inexistante.txt") rescue Errno::ENOENT puts "Le fichier demandé est introuvable." end
Cléopâtre réfléchit.
— C’est une véritable armure contre les erreurs. Continuons.
Un matin, tandis que la lumière de l’aube baignait Alexandrie, Cléopâtre posa
une nouvelle question :
— Ruby peut-il me connecter à d’autres royaumes numériques pour échanger des
informations ?
Philopator sourit.
— Majesté, grâce aux API (Interfaces de Portail), Ruby peut dialoguer avec
des systèmes lointains.
Il montra un exemple simple :
require 'net/http' require 'json' url = URI("https://api.spacexdata.com/v4/launches/latest") réponse = Net::HTTP.get(url) données = JSON.parse(réponse) puts "Dernier lancement spatial : #{données['name']}"
Le message s’afficha :
Dernier lancement spatial : Starship Test Flight
Cléopâtre s’exclama :
— Par les dieux, avec ces portails, je pourrais interroger les étoiles
elles-mêmes !
Philopator ajouta :
— C’est la clé pour interagir avec la Pyramide Noire. Elle contient des API
secrètes que nous pourrons déchiffrer.
Cléopâtre demanda :
— Et si mes scribes font des erreurs dans leurs incantations ? Comment
m’assurer que tout fonctionne toujours parfaitement ?
Philopator répondit :
— Majesté, nous avons une méthode : les tests automatisés. Ils vérifient
que les rituels sont exacts.
Il démontra :
require 'minitest/autorun' class TestScribe < Minitest::Test def test_présentation scribe = Scribe.new("Thothmes", "cartographie") assert_equal "Je suis Thothmes, spécialiste en cartographie.", scribe.présenter end end
Cléopâtre observa les résultats s’afficher :
1 run, 1 assertion, 0 failures
Elle hocha la tête.
— Avec ces gardiens, mon empire numérique sera invincible.
Cléopâtre avait maîtrisé les bases, mais elle savait que la Pyramide Noire
recelait encore des secrets insondables. Philopator conclut :
— Majesté, vous connaissez désormais Ruby comme un maître. Les classes, les
modules, les blocs, les gemmes et les API n’ont plus de secrets pour vous. Il
ne vous reste qu’à affronter la Pyramide.
Cléopâtre se leva, regardant les étoiles au-dessus d’Alexandrie.
— Alors, le moment est venu. Que le pouvoir de Ruby me guide à travers les
mystères de cet artefact céleste.
Une nuit où les étoiles semblaient vibrer d'une énergie mystérieuse, Cléopâtre, entourée de ses fidèles scribes et de Philopator, se tenait devant l’entrée imposante de la Pyramide Noire. Ses murs noirs comme l’onyx renvoyaient des reflets métalliques, et une inscription clignotait en lettres étranges, changeant constamment de forme.
Philopator murmura :
— Majesté, c’est ici que votre savoir en Ruby sera mis à l’épreuve. Cette
pyramide est protégée par un système de verrouillage numérique.
Cléopâtre s’approcha et posa la main sur la surface froide. Une interface lumineuse s’ouvrit, projetant des lignes de code dans les airs. Elle lut :
# Défi initial def résoudre_énigme(clef) return clef == clef.reverse end puts résoudre_énigme("kayak") # true puts résoudre_énigme("cléopatre") # false
Philopator expliqua :
— Cette énigme attend une clé palindrome, un mot qui se lit de la même
manière à l’envers.
Cléopâtre sourit et inscrivit :
clé = "radar" if résoudre_énigme(clé) puts "Le portail s'ouvre." else puts "Accès refusé." end
Le portail émit un bourdonnement, et une ouverture se forma.
À l’intérieur, un passage se révéla, mais il était obstrué par une série de
colonnes en mouvement. Chaque colonne portait des inscriptions numériques. Une
voix résonna :
— Résolvez l’énigme des gardiens, ou restez prisonniers à jamais.
Philopator traduisit :
— Majesté, ces colonnes vous défient de maîtriser les boucles.
Cléopâtre observa les symboles gravés, puis inscrivit sur une tablette projetée :
colonnes = [3, 5, 7, 9] colonnes.each do |hauteur| puts "Colonne de hauteur #{hauteur}" end
Les colonnes ralentirent, comme si elles écoutaient. Une autre énigme apparut :
# Trouvez la somme des hauteurs des colonnes somme = colonnes.reduce(0) { |total, hauteur| total + hauteur } puts "La somme est : #{somme}"
Elle entra la réponse correcte. Les colonnes se figèrent et laissèrent passer le groupe.
Au cœur de la pyramide, une salle immense contenait des sphères lumineuses
flottantes. Philopator s’agenouilla.
— Voici les API de la Pyramide Noire, dit-il. Ces sphères sont des points
d’accès vers d’autres mondes.
Cléopâtre approcha l’une des sphères. Une question apparut :
— Connectez-vous au royaume stellaire.
Elle écrivit :
require 'net/http' require 'json' url = URI("https://api.galacticrealm.com/stars") réponse = Net::HTTP.get(url) données = JSON.parse(réponse) puts "Étoiles détectées :" données['stars'].each { |star| puts star['name'] }
Une projection céleste remplit la salle. Les noms des étoiles s’affichaient en constellations complexes.
Philopator déclara :
— La Pyramide Noire reconnaît votre maîtrise. Vous êtes prête à accéder à son noyau.
Au centre de la pyramide, un trône immense trônait, entouré de codes vivants
qui scintillaient comme des glyphes. Une voix résonna, profonde et ancienne :
— Cléopâtre, vous avez prouvé votre valeur. Mais une dernière épreuve vous
attend : pouvez-vous modifier ce code pour libérer les mémoires du passé ?
Le code s’afficha devant elle :
mémoires = [
{ 'nom' => 'Égypte', 'statut' => 'inactif' },
{ 'nom' => 'Alexandrie', 'statut' => 'inactif' },
{ 'nom' => 'Pyramide Noire', 'statut' => 'actif' }
]
mémoires.each do |mémoire|
if mémoire['statut'] == 'inactif'
mémoire['statut'] = 'actif'
end
end
puts mémoires
Cléopâtre modifia les lignes pour débloquer le potentiel du système :
mémoires.map! do |mémoire| mémoire['statut'] = 'actif' mémoire end puts "Toutes les mémoires sont maintenant actives."
Le trône s’illumina, et la pyramide entière vibra. Une immense projection montra les secrets de l’univers, révélés pour la première fois depuis des millénaires.
Cléopâtre se tint droite, triomphante.
— L’univers appartient à ceux qui maîtrisent le savoir. Ruby était la clé, mais
c’est ma volonté qui a ouvert les portes.
Created by ChatGPT, 2025