window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = finestra if (w.LeadBooster) { console.warn('LeadBooster esiste già') } 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 }) }, } } })() Il ruolo di Rack nell'ecosistema Ruby - The Codest
The Codest
  • Chi siamo
  • Servizi
    • Sviluppo di software
      • Sviluppo Frontend
      • Sviluppo backend
    • Staff Augmentation
      • Sviluppatori Frontend
      • Sviluppatori backend
      • Ingegneri dei dati
      • Ingegneri del cloud
      • Ingegneri QA
      • Altro
    • Consulenza
      • Audit e consulenza
  • Industrie
    • Fintech e banche
    • E-commerce
    • Adtech
    • Tecnologia della salute
    • Produzione
    • Logistica
    • Automotive
    • IOT
  • Valore per
    • CEO
    • CTO
    • Responsabile della consegna
  • Il nostro team
  • Case Studies
  • Sapere come
    • Blog
    • Incontri
    • Webinar
    • Risorse
Carriera Contattate
  • Chi siamo
  • Servizi
    • Sviluppo di software
      • Sviluppo Frontend
      • Sviluppo backend
    • Staff Augmentation
      • Sviluppatori Frontend
      • Sviluppatori backend
      • Ingegneri dei dati
      • Ingegneri del cloud
      • Ingegneri QA
      • Altro
    • Consulenza
      • Audit e consulenza
  • Valore per
    • CEO
    • CTO
    • Responsabile della consegna
  • Il nostro team
  • Case Studies
  • Sapere come
    • Blog
    • Incontri
    • Webinar
    • Risorse
Carriera Contattate
Freccia indietro TORNA INDIETRO
2022-08-25
Sviluppo di software

Il ruolo di Rack nell'ecosistema Ruby

Nicolas Nisoria

Scoprite il ruolo del rack nell'ecosistema di Ruby grazie al nostro esperto e migliorate il vostro gioco con Ruby.

Mentre si lavora con Framework web Ruby è comune dare le cose per scontate. Sappiamo che il framework gestirà le richieste HTTP ed eseguirà la logica del middleware per noi. Quando diventiamo più curiosi, iniziamo a chiederci cosa c'è dietro le quinte, ed è qui che iniziamo a sentire parlare di Rack.

Che cos'è il Rack?

Il progetto è descritto come "Un'interfaccia modulare per server web in Ruby". Rack è l'interfaccia che ci permette di creare applicazioni web unificando le API per server web, framework web e middleware.

schema rack rubino

Come descritto nell'immagine precedente, Rack funge da intermediario tra la nostra applicazione Web e l'Application Server, avvolgendo le richieste HTTP nel più semplice
modo possibile.

Applicazione a rack

Un'applicazione Rack è un oggetto Ruby (non una classe) che risponde a chiamata. Richiede esattamente un argomento, il parametro ambiente e restituisce una matrice non congelata di
esattamente tre valori:

  • Il stato,
  • il intestazioni,
  • e il corpo.

    È possibile trovare le specifiche dettagliate di un'applicazione Rack qui.

richiedere 'rack'

classe RackApp
  def call(env)
        stato = 200
        headers = { 'Content-Type' => 'text/html' }
        body = ['<h1>L'applicazione My Rack<h1>']

    [stato, intestazioni, corpo]
  fine
fine

Rack::Handler

I gestori collegano i server Web con Rack. Rack include gestori per Thin, WEBrick, FastCGI, CGI, SCGI e LiteSpeed. Ogni server applicativo che supporta Rack deve
forniscono un gestore per creare la connessione (Puma ha un proprio gestore).I gestori di solito vengono attivati chiamando MyHandler.run(myapp). È possibile passare un secondo hash opzionale per includere la configurazione specifica del server.

Utilizzo di Thin application server

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

Il file predefinito per aggiungere la configurazione è config.ru e si può eseguire utilizzando rackup nella console.

Middleware per rack

Rack ci permette di creare applicazioni middleware (applicazioni tra la nostra applicazione web principale e l'application server). Queste applicazioni middleware sono concatenate ed eseguite in sequenza.

Il Rack Middleware deve implementare tutte le specifiche di un Applicazione a rack e soddisfare i seguenti punti:

  • Deve essere una classe,
  • hanno un inizializzatore che riceve un solo parametro (l'applicazione principale),
  • e chiamare il middleware successivo o l'applicazione.
classe RackMiddleware
def initialize(app)
@app = app
fine
def call(env)
@app.call(env)
fine
fine

Rack in pratica

Ora che conosciamo le basi, siamo pronti a creare la nostra prima applicazione Rack con Rack Middleware e a eseguirla con Puma (Application Server).

Installare le dipendenze

Assicuratevi di avere il scaffale e la gemma puma gemma installata.

gemma installare rack
gemma installare puma

Creare il file di configurazione

Per prima cosa, dobbiamo creare un file chiamato config.ru e questo file farà uso di
il DSL Rack::Builder per eseguire l'applicazione e aggiungere il middleware.

Aggiungere l'applicazione Rack

All'interno del config.ru aggiungeremo la semplice applicazione Rack definita in
le sezioni precedenti.

# config.ru

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

    [stato, intestazioni, corpo]
  fine
fine

Aggiungere il middleware Rack

Qui apporteremo una piccola modifica al nostro semplice middleware e ora aggiungerà il software del server al nostro corpo HTML dopo l'esecuzione.

# config.ru

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

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

    body << env['SERVER_SOFTWARE']

    [status, header, body]
  fine
fine

Eseguire il server delle applicazioni

Come ultimo passo, eseguiamo il server e vediamo la nostra applicazione in funzione. Il nostro config.ru Il file avrà il seguente aspetto:

# config.ru

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

    [status, header, body]
  fine
fine

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

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

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

    [status, header, body]
  fine
fine

utilizzare RackMiddleware
eseguire RackApp.new

Nelle ultime righe, si specifica il middleware usando utilizzo ed eseguiamo l'applicazione utilizzando correre.Siamo pronti ad eseguire rackup nella nostra console e vedremo il server in esecuzione. Possiamo controllare la porta su cui è in esecuzione la nostra applicazione e dovremmo vedere qualcosa di simile dopo l'accesso:

testo del server rack

Conclusioni

A volte è bene tornare alle basi e conoscere le intuizioni della tecnologia con cui lavoriamo. Imparare Rack ci dà una chiara visione d'insieme dell'architettura e ci svela la "magia" che si cela dietro la tecnologia. Quadri web Ruby.

banner di cooperazione

Articoli correlati

Sviluppo di software

GraphQL Ruby. E le prestazioni?

GraphQL, come ogni tecnologia, ha i suoi problemi, alcuni dei quali derivano direttamente dall'architettura e altri sono identici a quelli che si riscontrano in qualsiasi altra applicazione. Tuttavia, le soluzioni...

The Codest
Tomasz Szkaradek Architetto dello sviluppo
Sviluppo di software

Una semplice applicazione Ruby da zero con Active Record

MVC è un modello di progettazione che divide le responsabilità di un'applicazione per facilitarne la gestione. Rails segue questo modello di progettazione per convenzione.

The Codest
Damian Watroba Software Engineer
E-commerce

L'Ruby on Rails è una buona tecnologia per costruire un MVP?

Il minimum viable product (MVP) è uno dei principi della metodologia Lean Startup. L'obiettivo è aiutare gli imprenditori a iniziare il processo di apprendimento non appena...

Nicolas Nisoria

Iscrivetevi alla nostra knowledge base e rimanete aggiornati sulle competenze del settore IT.

    Chi siamo

    The Codest - Società internazionale di sviluppo software con centri tecnologici in Polonia.

    Regno Unito - Sede centrale

    • Ufficio 303B, 182-184 High Street North E6 2JA
      Londra, Inghilterra

    Polonia - Poli tecnologici locali

    • Parco uffici Fabryczna, Aleja
      Pokoju 18, 31-564 Cracovia
    • Ambasciata del cervello, Konstruktorska
      11, 02-673 Varsavia, Polonia

      The Codest

    • Casa
    • Chi siamo
    • Servizi
    • Case Studies
    • Sapere come
    • Carriera
    • Dizionario

      Servizi

    • Consulenza
    • Sviluppo di software
    • Sviluppo backend
    • Sviluppo Frontend
    • Staff Augmentation
    • Sviluppatori backend
    • Ingegneri del cloud
    • Ingegneri dei dati
    • Altro
    • Ingegneri QA

      Risorse

    • Fatti e miti sulla collaborazione con un partner esterno per lo sviluppo di software
    • Dagli Stati Uniti all'Europa: Perché le startup americane decidono di trasferirsi in Europa
    • Confronto tra gli hub di sviluppo Tech Offshore: Tech Offshore Europa (Polonia), ASEAN (Filippine), Eurasia (Turchia)
    • Quali sono le principali sfide di CTO e CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Condizioni di utilizzo del sito web

    Copyright © 2025 di The Codest. Tutti i diritti riservati.

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