Czy Ruby on Rails to dobra technologia do stworzenia MVP?
Minimalny opłacalny produkt (MVP) jest jedną z zasad metodologii Lean Startup. Celem jest pomoc przedsiębiorcom w rozpoczęciu procesu uczenia się tak szybko, jak...
Dowiedz się więcej o roli Rack w ekosystemie Ruby od naszego eksperta i podnieś swoje umiejętności w Ruby.
Podczas pracy z Ruby sieć ramy często przyjmujemy pewne rzeczy za pewnik. Wiemy, że framework obsłuży żądania HTTP i wykona logikę oprogramowania pośredniczącego dla my. Kiedy stajemy się bardziej ciekawi, zaczynamy zastanawiać się, co kryje się za kulisami, zaczynamy słyszeć o Rack.
The projekt is described as “A modular Ruby web server interface”. Rack is the interface that let us create web applications unifying the API for web servers, web frameworks, and middleware.

Jak opisano na powyższym obrazku, Rack działa jako pośrednik między naszą aplikacją internetową a serwerem aplikacji, opakowując żądania HTTP w najprostszy sposób.
sposób.
Aplikacja Rack jest obiektem Ruby (nie klasą), który reaguje na połączenie. Przyjmuje dokładnie jeden argument, wartość środowisko i zwraca niezamrożoną tablicę
dokładnie trzy wartości:
i ciało.
Szczegółową specyfikację aplikacji Rack można znaleźć pod adresem tutaj.
require 'rack'
class RackApp
def call(env)
status = 200
headers = { 'Content-Type' => 'text/html' }
body = ['<h1>Aplikacja My Rack<h1>']
[status, headers, body]
end
end
Handlers łączą serwery internetowe z Rack. Rack zawiera Handlers dla Thin, WEBrick, FastCGI, CGI, SCGI i LiteSpeed. Każdy serwer aplikacji obsługujący Rack powinien
udostępniają handler do tworzenia połączenia (Puma ma własny handler). Handlery są zwykle aktywowane przez wywołanie MyHandler.run(myapp). Drugi opcjonalny hash można przekazać w celu dołączenia konfiguracji specyficznej dla serwera.
Korzystanie z serwera aplikacji Thin
Rack::Handler::Thin.run(app)
Domyślnym plikiem do dodania konfiguracji jest config.ru i można go wykonać przy użyciu rackup w konsoli.
Rack pozwala nam tworzyć aplikacje pośredniczące (aplikacje między naszą główną aplikacją internetową a serwerem aplikacji). Te aplikacje pośredniczące są łączone w łańcuchy i wykonywane sekwencyjnie.
Rack Middleware musi implementować wszystkie specyfikacje Zastosowanie stojaka i spełniają następujące punkty:
class RackMiddleware
def initialize(app)
@app = app
end
def call(env)
@app.call(env)
end
end
Teraz, gdy znamy już podstawy, jesteśmy gotowi stworzyć naszą pierwszą aplikację Rack z Rack Middleware i uruchomić ją za pomocą Pumy (serwera aplikacji).
Upewnij się, że masz stojak klejnot i puma zainstalowany klejnot.
gem install rack
gem install puma
Najpierw musimy utworzyć plik o nazwie config.ru i ten plik będzie korzystał z
Rack::Builder DSL, aby uruchomić aplikację i dodać oprogramowanie pośredniczące.
W ramach config.ru dodamy prostą aplikację Rack, którą zdefiniowaliśmy w pliku
poprzednie sekcje.
# config.ru
class RackApp
def call(env)
status = 200
headers = { 'Content-Type' => 'text/html' }
body = ['<h1>Aplikacja My Rack<h1>']
[status, headers, body]
end
end
W tym miejscu dokonamy niewielkiej modyfikacji naszego prostego oprogramowania pośredniczącego, które po wykonaniu doda oprogramowanie serwera do treści HTML.
# config.ru
class 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
Na koniec uruchomimy serwer i zobaczymy, jak działa nasza aplikacja. Nasz config.ru będzie wyglądał następująco:
# config.ru
class RackApp
def call(env)
status = 200
headers = { 'Content-Type' => 'text/html' }
body = ['<h1>Aplikacja My Rack<h1>']
[status, headers, body]
end
end
class 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
W ostatnich linijkach określamy oprogramowanie pośredniczące za pomocą użycie i uruchamiamy aplikację przy użyciu bieg.Jesteśmy gotowi do realizacji rackup w naszej konsoli i zobaczymy uruchomiony serwer. Możemy sprawdzić port, na którym działa nasza aplikacja i powinniśmy zobaczyć coś takiego po uzyskaniu do niego dostępu:

Czasami dobrze jest wrócić do podstaw i poznać wgląd w technologię, z którą pracujemy. Nauka Rack daje nam jasny przegląd architektury i ujawnia "magię" stojącą za technologią. Ruby Web Frameworks.
