window.pipedriveLeadboosterConfig = { base : 'leadbooster-chat.pipedrive.com', companyId : 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version : 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster existe déjà') } else { w.LeadBooster = { q : [], on : function (n, h) { this.q.push({ t : 'o', n : n, h : h }) }, trigger : function (n) { this.q.push({ t : 't', n : n }) }, } } })() Le rôle de Rack dans l'écosystème Ruby - The Codest
The Codest
  • A propos de nous
  • Services
    • Développement de logiciels
      • Développement frontal
      • Développement backend
    • Staff Augmentation
      • Développeurs frontaux
      • Développeurs backend
      • Ingénieurs des données
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs AQ
      • Autres
    • Conseil consultatif
      • Audit et conseil
  • Industries
    • Fintech et banque
    • E-commerce
    • Adtech
    • Santé (Healthtech)
    • Fabrication
    • Logistique
    • Automobile
    • IOT
  • Valeur pour
    • CEO
    • CTO
    • Gestionnaire des livraisons
  • Notre équipe
  • Études de cas
  • Savoir comment
    • Blog
    • Rencontres
    • Webinaires
    • Ressources
Carrières Prendre contact
  • A propos de nous
  • Services
    • Développement de logiciels
      • Développement frontal
      • Développement backend
    • Staff Augmentation
      • Développeurs frontaux
      • Développeurs backend
      • Ingénieurs des données
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs AQ
      • Autres
    • Conseil consultatif
      • Audit et conseil
  • Valeur pour
    • CEO
    • CTO
    • Gestionnaire des livraisons
  • Notre équipe
  • Études de cas
  • Savoir comment
    • Blog
    • Rencontres
    • Webinaires
    • Ressources
Carrières Prendre contact
Flèche arrière RETOUR
2022-08-25
Développement de logiciels

Le rôle de Rack dans l'écosystème Ruby

Nicolas Nisoria

Apprenez-en plus sur le rôle du rack dans l'écosystème de Ruby grâce à notre expert et améliorez vos compétences en Ruby.

En travaillant avec Cadres web Ruby il est courant de prendre les choses pour acquises. Nous savons que le framework va gérer les requêtes HTTP et exécuter la logique du middleware pour nous. Lorsque nous devenons plus curieux, nous commençons à nous demander ce qu'il y a derrière les coulisses, et c'est là que nous commençons à entendre parler de Rack.

Qu'est-ce que Rack ?

Les projet est décrit comme "une interface modulaire de serveur web Ruby". Rack est l'interface qui nous permet de créer des applications web en unifiant l'API pour les serveurs web, les frameworks web et les middleware.

rack ruby scheme

Comme décrit dans l'image ci-dessus, Rack agit comme un intermédiaire entre notre application Web et le serveur d'application, il enveloppe les requêtes HTTP dans le plus simple des systèmes d'information.
de la manière la plus efficace possible.

Application en rack

Une application Rack est un objet Ruby (et non une classe) qui répond à une demande de appel. Elle prend exactement un argument, le l'environnement et renvoie un tableau non gelé de
exactement trois valeurs :

  • Les statut,
  • les en-têtes,
  • et le corps.

    Vous pouvez trouver la spécification détaillée d'une application Rack ici.

nécessite 'rack'

classe RackApp
  def call(env)
        status = 200
        headers = { 'Content-Type' => 'text/html' }
        body = ['<h1>Mon application Rack<h1>']

    [status, headers, body]
  end
fin

Rack::Handler

Les gestionnaires connectent les serveurs web à Rack. Rack comprend des gestionnaires pour Thin, WEBrick, FastCGI, CGI, SCGI et LiteSpeed. Chaque serveur d'application qui prend en charge Rack doit
fournissent un gestionnaire pour créer la connexion (Puma a son propre gestionnaire). Les gestionnaires sont généralement activés en appelant la commande MyHandler.run(myapp). Un deuxième hachage facultatif peut être transmis pour inclure la configuration spécifique au serveur.

Utilisation du serveur d'application Thin

Rack::Handler::Thin.run(app)

Le fichier par défaut pour ajouter la configuration est config.ru et vous pouvez l'exécuter en utilisant rackup dans votre console.

Logiciel médiateur pour rack

Rack nous permet de créer des applications intermédiaires (applications entre notre application web principale et le serveur d'application). Ces applications intermédiaires sont enchaînées et exécutées de manière séquentielle.

L'intergiciel de rack doit mettre en œuvre toutes les spécifications d'un Application en rack et répondre aux points suivants :

  • Il doit s'agir d'une classe,
  • ont un initialisateur qui ne reçoit qu'un seul paramètre (l'application principale),
  • et appeler l'intergiciel suivant ou l'application.
classe RackMiddleware
def initialize(app)
@app = app
end
def call(env)
@app.call(env)
end
end

Rack en pratique

Maintenant que nous connaissons les bases, nous sommes prêts à créer notre première application Rack avec Rack Middleware et à l'exécuter à l'aide de Puma (Application Server).

Installer les dépendances

Assurez-vous d'avoir le support et le puma gem installé.

gem install rack
gem install puma

Créer le fichier de configuration

Tout d'abord, nous devons créer un fichier appelé config.ru et ce fichier utilisera
le DSL Rack::Builder pour exécuter l'application et ajouter l'intergiciel.

Ajouter l'application Rack

Dans le cadre de la config.ru nous ajouterons l'application Rack simple que nous avons définie dans le fichier
les sections précédentes.

# config.ru

classe RackApp
  def call(env)
    status = 200
    headers = { 'Content-Type' =&gt; 'text/html' }
    body = ['<h1>Mon application Rack<h1>']

    [status, headers, body]
  end
fin

Ajouter l'intergiciel Rack

Nous allons ici apporter une petite modification à notre intergiciel simple, qui ajoutera désormais le logiciel serveur à notre corps HTML après son exécution.

# config.ru

classe RackMiddleware
  def initialize(app)
    @app = app
  end

  def call(env)
    status, headers, body = @app.call(env)

    body << env['SERVER_SOFTWARE']

    [status, headers, body]
  end
fin

Exécuter le serveur d'application

Pour terminer, nous allons lancer le serveur et voir notre application fonctionner. Notre config.ru se présentera comme suit :

# config.ru

classe RackApp
  def call(env)
    status = 200
    headers = { 'Content-Type' =&gt; 'text/html' }
    body = ['<h1>Mon application Rack<h1>']

    [status, headers, body]
  end
fin

classe RackMiddleware
  def initialize(app)
    @app = app
  fin

  def call(env)
    status, headers, body = @app.call(env)

    body <&lt; env[&#039;SERVER_SOFTWARE&#039;]

    [status, headers, body]
  end
fin

utiliser RackMiddleware
exécuter RackApp.new

Dans les dernières lignes, nous spécifions l'intergiciel à l'aide de utiliser et nous exécutons l'application en utilisant courir.Nous sommes prêts à exécuter rackup dans notre console et voir le serveur fonctionner. Nous pouvons vérifier le port sur lequel tourne notre application et nous devrions voir quelque chose comme ceci après y avoir accédé :

texte du serveur rack

Conclusions

Il est parfois bon de revenir aux bases et d'apprendre à mieux connaître la technologie avec laquelle nous travaillons. L'apprentissage de Rack nous donne une vue d'ensemble claire de l'architecture et révèle la "magie" qui se cache derrière la technologie. Cadres Web Ruby.

bannière de coopération

Articles connexes

Développement de logiciels

GraphQL Ruby. Qu'en est-il des performances ?

GraphQL, comme toute technologie, a ses problèmes, dont certains résultent directement de l'architecture et d'autres sont identiques à ce que nous voyons dans n'importe quelle autre application. Cependant, les solutions...

The Codest
Tomasz Szkaradek Architecte de développement
Développement de logiciels

Une application Ruby simple à partir de zéro avec Active Record

MVC est un modèle de conception qui divise les responsabilités d'une application afin d'en faciliter le déplacement. Rails suit ce modèle de conception par convention.

The Codest
Damian Watroba Software Engineer
E-commerce

Le Ruby on Rails est-il une bonne technologie pour construire un MVP ?

Un produit minimum viable (MVP) est l'un des principes de la méthodologie Lean Startup. L'objectif est d'aider les entrepreneurs à commencer le processus d'apprentissage dès...

Nicolas Nisoria

Abonnez-vous à notre base de connaissances et restez au courant de l'expertise du secteur des technologies de l'information.

    A propos de nous

    The Codest - Entreprise internationale de développement de logiciels avec des centres technologiques en Pologne.

    Royaume-Uni - Siège

    • Bureau 303B, 182-184 High Street North E6 2JA
      Londres, Angleterre

    Pologne - Les pôles technologiques locaux

    • Parc de bureaux Fabryczna, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsovie, Pologne

      The Codest

    • Accueil
    • A propos de nous
    • Services
    • Études de cas
    • Savoir comment
    • Carrières
    • Dictionnaire

      Services

    • Conseil consultatif
    • Développement de logiciels
    • Développement backend
    • Développement frontal
    • Staff Augmentation
    • Développeurs backend
    • Ingénieurs en informatique dématérialisée
    • Ingénieurs des données
    • Autres
    • Ingénieurs AQ

      Ressources

    • Faits et mythes concernant la coopération avec un partenaire externe de développement de logiciels
    • Des États-Unis à l'Europe : Pourquoi les startups américaines décident-elles de se délocaliser en Europe ?
    • Comparaison des pôles de développement Tech Offshore : Tech Offshore Europe (Pologne), ASEAN (Philippines), Eurasie (Turquie)
    • Quels sont les principaux défis des CTO et des DSI ?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Conditions d'utilisation du site web

    Copyright © 2025 par The Codest. Tous droits réservés.

    fr_FRFrench
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek fr_FRFrench