window.pipedriveLeadboosterConfig = { base: leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on juba olemas') } 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 }) }, } } })() Riiuli roll rubiini ökosüsteemis - The Codest
The Codest
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Tööstusharud
    • Fintech & pangandus
    • E-commerce
    • Adtech
    • Healthtech
    • Tootmine
    • Logistika
    • Autotööstus
    • IOT
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
Tagasi nool TAGASI
2022-08-25
Tarkvaraarendus

Racki roll Ruby ökosüsteemis

Nicolas Nisoria

Õppige meie eksperdilt rohkem hammaste rollist Ruby ökosüsteemis ja parandage oma rubiinimängu oskust.

Töötades koos Ruby veebiraamistikud on tavaline, et asju peetakse enesestmõistetavaks. Me teame, et raamistik tegeleb HTTP-päringutega ja täidab meie eest vahendusloogikat. Kui me muutume uudishimulikumaks, hakkame mõtlema, mis on kulisside taga, seal hakkame kuulma Rackist.

Mis on Rack?

The projekt on kirjeldatud kui "modulaarne Ruby veebiserveri liides". Rack on liides, mis võimaldab meil luua veebirakendusi, mis ühendavad veebiserverite, veebiraamistike ja vahendusprogrammide API-d.

rack rubiin skeem

Nagu ülaltoodud pildil kirjeldatud, toimib Rack vahendajana meie veebirakenduse ja rakendusserveri vahel, ta mähib HTTP päringud lihtsaimasse
viisil võimalik.

Riiulirakendus

Rack rakendus on Ruby objekt (mitte klass), mis reageerib helista. See võtab täpselt ühe argumendi, milleks on keskkond ja tagastab külmutamata Array of
täpselt kolm väärtust:

  • The staatus,
  • . päised,
  • ja keha.

    Üksikasjalikud andmed Rack Application'i kohta leiate järgmiselt. siin.

nõuda 'rack'

klass RackApp
  def call(env)
        status = 200
        headers = { 'Content-Type' => 'text/html' }
        body = ['<h1>Minu Rack App<h1>']

    [staatus, päised, keha]
  end
end

Rack::Handler

Käsitlejad ühendavad veebiserverid Rackiga. Rack sisaldab käsitsejaid Thin, WEBrick, FastCGI, CGI, SCGI ja LiteSpeed jaoks. Iga Racki toetav rakendusserver peaks
anda käsitseja ühenduse loomiseks (Pumal on oma käsitseja).Käsitsejad aktiveeritakse tavaliselt kutsumisega MyHandler.run(myapp). Teise valikulise hashi võib edastada serverispetsiifilise konfiguratsiooni lisamiseks.

Kasutades õhukese rakendusserveri

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

Konfiguratsiooni lisamise vaikimisi fail on config.ru ja seda saab täita, kasutades rackup käsk teie konsoolis.

Rack Middleware

Rack võimaldab meil luua vahendusrakendusi (rakendused meie peamise veebirakenduse ja rakendusserveri vahel). Need vahendusrakendused on omavahel seotud ja neid käivitatakse järjestikku.

Rack Middleware peab rakendama kõiki spetsifikatsioone, mis on seotud Riiulirakendus ja vastama järgmistele punktidele:

  • See peab olema klass,
  • on initsialiseerija, mis saab ainult ühe parameetri (põhirakendus),
  • ja helistage järgmisele vahendusprogrammile või rakendusele.
klass RackMiddleware
def initialize(app)
@app = app
end
def call(env)
@app.call(env)
end
end

Rack praktikasse

Nüüd, kui me teame põhitõdesid, oleme valmis looma oma esimese Rack-rakenduse Rack Middleware'iga ja käivitama seda Puma (Application Server) abil.

Paigaldage sõltuvused

Veenduge, et teil on rack kalliskivi ja puma gem paigaldatud.

gem paigaldada hammasratas
gem install puma

Luua konfiguratsioonifail

Kõigepealt peame looma faili nimega config.ru ja see fail kasutab
Rack::Builder DSL, et käivitada rakendus ja lisada vahendusprogramm.

Racki rakenduse lisamine

Seespoolt config.ru faili, lisame lihtsa Rack rakenduse, mille defineerisime failis
eelmised lõigud.

# config.ru

klass RackApp
  def call(env)
    status = 200
    headers = { 'Content-Type' =&gt; 'text/html' }
    body = ['<h1>Minu Rack App<h1>']

    [staatus, päised, keha]
  end
end

Rack Middleware lisamine

Siin teeme väikese muudatuse meie lihtsasse vaheprogrammile ja nüüd lisab see pärast täitmist meie HTML-korpusesse serveri tarkvara.

# config.ru

klass 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

Rakendusserveri käivitamine

Viimase sammuna käivitame serveri ja näeme, kuidas meie rakendus töötab. Meie config.ru fail näeb välja järgmiselt:

# config.ru

klass RackApp
  def call(env)
    status = 200
    headers = { 'Content-Type' =&gt; 'text/html' }
    body = ['<h1>Minu Rack App<h1>']

    [staatus, päised, keha]
  end
end

class 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
käivitada RackApp.new

Viimastes ridades täpsustame vahendusprogrammi, kasutades kasutada ja käivitame rakenduse kasutades joosta.Me oleme valmis täitma rackup meie konsooli ja näeme, et server töötab. Me võime kontrollida port, kus meie rakendus töötab, ja peaksime pärast sellele juurdepääsu nägema midagi sellist:

rack serveri tekst

Järeldused

Mõnikord on hea minna tagasi põhitõdede juurde ja õppida tundma tehnoloogiat, millega me töötame. Learning Rack annab meile selge ülevaate arhitektuurist ja paljastab "maagia" taga oleva Ruby veebiraamistikud.

koostööbänner

Seotud artiklid

Tarkvaraarendus

GraphQL Ruby. Kuidas on tulemuslikkus?

GraphQLil, nagu igal tehnoloogial, on omad probleemid, millest mõned tulenevad otseselt arhitektuurist ja mõned on identsed sellega, mida me näeme mis tahes muu rakenduse puhul. Siiski on lahendused...

The Codest
Tomasz Szkaradek Arendusarhitekt
Tarkvaraarendus

Lihtne Ruby rakendus algusest peale koos Active Recordiga

MVC on disainimudel, mis jagab rakenduse vastutusalad, et muuta liikumine lihtsamaks. Rails järgib seda disainimustrit kokkuleppeliselt.

The Codest
Damian Watroba Software Engineer
E-commerce

Kas Ruby on Rails on hea tehnoloogia MVP loomiseks?

Minimaalselt elujõuline toode (MVP) on üks Lean Startup metoodika põhimõtteid. Eesmärk on aidata ettevõtjatel alustada õppimist niipea, kui...

Nicolas Nisoria

Tellige meie teadmistebaas ja jääge kursis IT-sektori eksperditeadmistega.

    Meie kohta

    The Codest - rahvusvaheline tarkvaraarendusettevõte, mille tehnoloogiakeskused asuvad Poolas.

    Ühendkuningriik - peakorter

    • Büroo 303B, 182-184 High Street North E6 2JA
      London, Inglismaa

    Poola - kohalikud tehnoloogiakeskused

    • Fabryczna büroopark, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varssavi, Poola

      The Codest

    • Kodu
    • Meie kohta
    • Teenused
    • Case Studies
    • Tea kuidas
    • Karjäärivõimalused
    • Sõnastik

      Teenused

    • See nõuandev
    • Tarkvaraarendus
    • Backend arendus
    • Frontend arendus
    • Staff Augmentation
    • Backend arendajad
    • Pilveinsenerid
    • Andmeinsenerid
    • Muud
    • QA insenerid

      Ressursid

    • Faktid ja müüdid koostööst välise tarkvaraarenduspartneriga
    • USAst Euroopasse: Miks otsustavad Ameerika idufirmad Euroopasse ümber asuda?
    • Tech Offshore arenduskeskuste võrdlus: Euroopa (Poola), ASEAN (Filipiinid), Euraasia (Türgi).
    • Millised on CTO ja CIOde peamised väljakutsed?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2025 by The Codest. Kõik õigused kaitstud.

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