The Codest
  • O nás
  • Služby
    • Vývoj softwaru
      • Vývoj frontendů
      • Vývoj backendu
    • Staff Augmentation
      • Vývojáři frontendů
      • Vývojáři backendu
      • Datoví inženýři
      • Cloudoví inženýři
      • Inženýři QA
      • Další
    • To Advisory
      • Audit a poradenství
  • Odvětví
    • Fintech a bankovnictví
    • E-commerce
    • Adtech
    • Healthtech
    • Výroba
    • Logistika
    • Automobilový průmysl
    • IOT
  • Hodnota za
    • CEO
    • CTO
    • Manažer dodávek
  • Náš tým
  • Case Studies
  • Vědět jak
    • Blog
    • Setkání
    • Webové semináře
    • Zdroje
Kariéra Spojte se s námi
  • O nás
  • Služby
    • Vývoj softwaru
      • Vývoj frontendů
      • Vývoj backendu
    • Staff Augmentation
      • Vývojáři frontendů
      • Vývojáři backendu
      • Datoví inženýři
      • Cloudoví inženýři
      • Inženýři QA
      • Další
    • To Advisory
      • Audit a poradenství
  • Hodnota za
    • CEO
    • CTO
    • Manažer dodávek
  • Náš tým
  • Case Studies
  • Vědět jak
    • Blog
    • Setkání
    • Webové semináře
    • Zdroje
Kariéra Spojte se s námi
Šipka zpět ZPĚT
2022-08-25
Vývoj softwaru

Role Racku v ekosystému Ruby

Nicolas Nisoria

Zjistěte více o úloze racku v ekosystému Ruby od našeho odborníka a zvyšte své dovednosti ve hře s Ruby.

Při práci s Ruby webové rámce je běžné brát věci jako samozřejmost. Víme, že framework bude zpracovávat požadavky HTTP a provádět logiku middlewaru pro nás. Když jsme zvědavější, začínáme se zajímat o to, co je v zákulisí, a tam začínáme slyšet o Rackovi.

Co je Rack?

Na stránkách projekt je popisován jako "modulární rozhraní webového serveru v jazyce Ruby". Rack je rozhraní, které nám umožňuje vytvářet webové aplikace sjednocující API pro webové servery, webové frameworky a middleware.

schéma rubínového stojanu

Jak je popsáno na výše uvedeném obrázku, Rack funguje jako prostředník mezi naší webovou aplikací a aplikačním serverem, zabalí požadavky HTTP do nejjednoduššího způsobu.
možným způsobem.

Aplikace stojanu

Aplikace Rack je objekt jazyka Ruby (nikoli třída), který reaguje na příkazy zavolejte na. Přijímá přesně jeden argument, a to prostředí a vrací nezmrazené pole
přesně tři hodnoty:

  • Na stránkách stav,
  • na záhlaví,
  • a tělo.

    Podrobnou specifikaci aplikace Rack naleznete na stránce zde.

vyžadovat 'rack'

třída RackApp
  def call(env)
        status = 200
        headers = { 'Content-Type' => 'text/html' }
        body = ['<h1>Aplikace My Rack<h1>']

    [status, headers, body]
  konec
konec

Rack::Handler

Obslužné rutiny propojují webové servery se serverem Rack. Rack obsahuje obslužné programy pro Thin, WEBrick,FastCGI, CGI, SCGI a LiteSpeed. Každý aplikační server, který podporuje Rack, by měl
poskytnout obslužný program pro vytvoření spojení (Puma má vlastní obslužný program).Obslužné programy se obvykle aktivují voláním MyHandler.run(myapp). Druhý nepovinný hash lze předat pro zahrnutí konfigurace specifické pro server.

Použití aplikačního serveru Thin

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

Výchozí soubor pro přidání konfigurace je config.ru a můžete ji spustit pomocí rackup v konzoli.

Rack Middleware

Rack nám umožňuje vytvářet middleware aplikace (aplikace mezi hlavní webovou aplikací a aplikačním serverem). Tyto middlewarové aplikace se řetězí a spouštějí se postupně.

Rack Middleware musí implementovat všechny specifikace pro Aplikace stojanu a splňují následující body:

  • Musí to být třída,
  • mají inicializátor, který přijímá pouze jeden parametr (hlavní aplikaci),
  • a zavolat další middleware nebo aplikaci.
třída RackMiddleware
def initialize(app)
@app = app
end
def call(env)
@app.call(env)
end
end

Převod stojanu do praxe

Nyní, když známe základy, jsme připraveni vytvořit naši první rackovou aplikaci s middlewarem Rack a spustit ji pomocí Pumy (aplikačního serveru).

Instalace závislostí

Ujistěte se, že máte stojan drahokam a puma nainstalovaný drahokam.

instalace stojanu na drahokamy
gem install puma

Vytvoření konfiguračního souboru

Nejprve musíme vytvořit soubor s názvem config.ru a tento soubor bude využívat
Rack::Builder DSL ke spuštění aplikace a přidání middlewaru.

Přidání aplikace Rack

V rámci config.ru přidáme jednoduchou aplikaci Rack, kterou jsme definovali v souboru
předchozí oddíly.

# config.ru

třída RackApp
  def call(env)
    status = 200
    headers = { 'Content-Type' =&gt; 'text/html' }
    body = ['<h1>Aplikace My Rack<h1>']

    [status, headers, body]
  konec
konec

Přidání middlewaru Rack

Zde provedeme malou úpravu našeho jednoduchého middlewaru, který nyní po spuštění přidá software serveru do těla HTML.

# config.ru

třída RackMiddleware
  def initialize(app)
    @app = app
  end

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

    body << env['SERVER_SOFTWARE']

    [status, headers, body]
  end
end

Spuštění aplikačního serveru

Jako poslední krok spustíme server a uvidíme, že naše aplikace běží. Naše stránka config.ru bude vypadat takto:

# config.ru

třída RackApp
  def call(env)
    status = 200
    headers = { 'Content-Type' =&gt; 'text/html' }
    body = ['<h1>Aplikace My Rack<h1>']

    [status, headers, body]
  konec
konec

třída RackMiddleware
  def initialize(app)
    @app = app
  end

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

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

    [status, headers, body]
  end
end

use RackMiddleware
run RackApp.new

V posledních řádcích specifikujeme middleware pomocí použít a aplikaci spustíme pomocí běh.Jsme připraveni provést rackup v naší konzoli a uvidíte, že server běží. Můžeme zkontrolovat port, na kterém běží naše aplikace, a po přístupu k němu bychom měli vidět něco takového:

text rackového serveru

Závěry

Někdy je dobré vrátit se k základům a seznámit se s technologiemi, se kterými pracujeme. Učení Rack nám dává jasný přehled o architektuře a odhaluje "kouzlo", které se za ní skrývá. Webové rámce Ruby.

banner spolupráce

Související články

Vývoj softwaru

GraphQL Ruby. Jak je to s výkonem?

Jako každá technologie má i GraphQL své problémy, z nichž některé vyplývají přímo z architektury a některé jsou totožné s problémy, které se vyskytují v jakékoli jiné aplikaci. Řešení jsou však...

The Codest
Tomasz Szkaradek Vývojový architekt
Vývoj softwaru

Jednoduchá aplikace Ruby od nuly s Active Record

MVC je návrhový vzor, který rozděluje odpovědnosti aplikace tak, aby se v ní dalo lépe pohybovat. Rails se tímto návrhovým vzorem řídí podle konvence.

The Codest
Damian Watroba Software Engineer
E-commerce

Je Ruby on Rails dobrá technologie pro vytvoření MVP?

Minimální životaschopný produkt (MVP) je jedním z principů metodiky Lean Startup. Jejím cílem je pomoci podnikatelům začít proces učení co nejdříve....

Nicolas Nisoria

Přihlaste se k odběru naší znalostní databáze a získejte aktuální informace o odborných znalostech z oblasti IT.

    O nás

    The Codest - Mezinárodní společnost zabývající se vývojem softwaru s technologickými centry v Polsku.

    Spojené království - ústředí

    • Kancelář 303B, 182-184 High Street North E6 2JA
      Londýn, Anglie

    Polsko - Místní technologická centra

    • Kancelářský park Fabryczna, Aleja
      Pokoju 18, 31-564 Krakov
    • Brain Embassy, Konstruktorska
      11, 02-673 Varšava, Polsko

      The Codest

    • Home
    • O nás
    • Služby
    • Case Studies
    • Vědět jak
    • Kariéra
    • Slovník

      Služby

    • To Advisory
    • Vývoj softwaru
    • Vývoj backendu
    • Vývoj frontendů
    • Staff Augmentation
    • Vývojáři backendu
    • Cloudoví inženýři
    • Datoví inženýři
    • Další
    • Inženýři QA

      Zdroje

    • Fakta a mýty o spolupráci s externím partnerem pro vývoj softwaru
    • Z USA do Evropy: Proč se americké startupy rozhodly přesídlit do Evropy?
    • Srovnání technických vývojových center v zahraničí: Tech Offshore Evropa (Polsko), ASEAN (Filipíny), Eurasie (Turecko)
    • Jaké jsou hlavní výzvy CTO a CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2026 by The Codest. Všechna práva vyhrazena.

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