Einföld Ruby-forritun frá grunni með Active Record
MVC er hönnunarmynstur sem skiptir ábyrgðum forrits til að auðvelda siglingar. Rails fylgir þessu hönnunarmynstri samkvæmt venju.
Lærðu meira um hlutverk rack í vistkerfi Ruby frá sérfræðingi okkar og bættu Ruby-færni þína.
Hér er tómt.Á meðan unnið er með Rúbín vefur rammasetningar Það er algengt að taka hluti sem sjálfsögðum. Við vitum að ramminn mun sjá um HTTP-beiðnirnar og framkvæma miðlara-lógíkina fyrir okkur. Þegar forvitni okkar eykst byrjum við að velta fyrir okkur hvað er bak við tjöldin, og þá heyrum við um Rack.
Þeir verkefni er lýst sem “modúlvænu Ruby-vefþjónaviðmóti”. Rack er viðmótið sem gerir okkur kleift að búa til vefumsóknir með því að sameina forritaskil fyrir vefþjóna, vefgrindur og milliforrit.

Eins og sýnt er á myndinni hér að ofan, starfar Rack sem milliliður milli vefumsóknarinnar okkar og forritsþjónsins, hann pakkar HTTP-beiðnirnar í einfaldasta
á sem mögulegt er.
Rack-forrit er Ruby-hlutur (ekki flokkur) sem bregst við hringja. Hann tekur nákvæmlega eina röksemd, the umhverfi og skilar ófrystum fylki af
nákvæmlega þrjár gildi:
og hinn líkami.
Þú getur fundið nákvæma lýsingu á Rack-forriti. hér.
require 'rack'
class RackApp
def call(env)
status = 200
headers = { 'Content-Type' => 'text/html' }
body = ['<h1>My Rack App<h1>']
[staða, hausar, líkama]
enda
enda
Handlarar tengja vefþjóna við Rack. Rack inniheldur handlara fyrir Thin, WEBrick, FastCGI, CGI, SCGI og LiteSpeed. Hver forritþjónn sem styður Rack ætti
veita meðhöndlara til að búa til tenginguna (Puma hefur sinn eigin meðhöndlara). Meðhöndlarar eru venjulega virkjaðir með því að kalla MyHandler.run(myapp). Annað valfrjálst skrá má senda til að fela í sér netþjónsspecifíska stillingu.
Nota Thin forritþjón
Rack::Handler::Thin.run(app)
Skilgreinda skráin til að bæta við stillinguna er stillingar.ru og þú getur keyrt það með söfnun Sláðu inn skipun í konsóluna þína.
Rack gerir okkur kleift að búa til milliforrit (forrit sem eru á milli aðalvefforritsins okkar og forritsþjónsins). Þessi milliforrit eru tengd saman í keðju og keyrð í röð.
Rack Middleware verður að innleiða allar forskriftir a Stöndlarsamsetning og uppfylli eftirfarandi atriði:
class RackMiddleware
def initialize(app)
@app = app
end
def call(env)
@app.call(env)
end
end
Nú þegar við þekkjum grunnatriðin erum við tilbúin að búa til okkar fyrstu Rack-forrit með Rack Middleware og keyra það með Puma (forritþjóni).
Gakktu úr skugga um að þú hafir hillu gimsteinn og hinn puma Gersemi uppsett.
gem install rack
gem install puma
Í fyrsta lagi verðum við að búa til skrá sem heitir stillingar.ru og þessi skrá mun nýta sér
the Rack::Builder DSL til að keyra forritið og bæta við milliforritinu.
Inni í stillingar.ru skrá, munum við bæta við einföldu Rack-forritinu sem við skilgreindum í
fyrri köflunum.
# config.ru
class RackApp
def call(env)
status = 200
headers = { 'Content-Type' => 'text/html' }
body = ['<h1>My Rack App<h1>']
[staða, hausar, líkama]
enda
enda
Hér munum við gera smávægilega breytingu á einföldu milliforriti okkar, og nú mun það bæta netþjónahugbúnaðinn við HTML-líkamann okkar eftir að því hefur verið keyrt.
# 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
Sem síðasta skref keyrum við netþjóninn og sjáum forritið okkar keyra. Okkar stillingar.ru Skráin mun líta svona út:
# config.ru
class RackApp
def call(env)
status = 200
headers = { 'Content-Type' => 'text/html' }
body = ['<h1>My Rack App<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
Í síðustu línunum tilgreinum við milliforritið með nota og við keyrum forritið með hlaupa.Við erum tilbúnir að framkvæma söfnun Í konsólunni okkar sjáum við að netþjónninn er í gangi. Við getum athugað hvaða port forritið okkar keyrir á og ættum að sjá eitthvað svipað þessu eftir að hafa fengið aðgang að því:

Stundum er gott að snúa aftur til grunnatriða og kynnast innsýn í tæknina sem við vinnum með. Learning Rack gefur okkur skýrt yfirlit yfir arkitektúrinn og afhjúpar “galdurinn” á bak við Ruby vefgrindverkin.
