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...
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.
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.

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 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:
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
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 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:
třída RackMiddleware
def initialize(app)
@app = app
end
def call(env)
@app.call(env)
end
end
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).
Ujistěte se, že máte stojan drahokam a puma nainstalovaný drahokam.
instalace stojanu na drahokamy
gem install puma
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.
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' => 'text/html' }
body = ['<h1>Aplikace My Rack<h1>']
[status, headers, body]
konec
konec
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
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' => '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 << env['SERVER_SOFTWARE']
[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:

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.
