The Codest
  • Apie mus
  • Paslaugos
    • Programinės įrangos kūrimas
      • Priekinės dalies kūrimas
      • Galinės dalies kūrimas
    • Staff Augmentation
      • Priekinės dalies kūrėjai
      • Atgalinės versijos kūrėjai
      • Duomenų inžinieriai
      • Debesų inžinieriai
      • QA inžinieriai
      • Kita
    • Patariamoji tarnyba
      • Auditas ir konsultacijos
  • Pramonės šakos
    • Fintech ir bankininkystė
    • E-commerce
    • Adtech
    • Sveikatos technologijos
    • Gamyba
    • Logistika
    • Automobiliai
    • IOT
  • Vertė už
    • CEO
    • CTO
    • Pristatymo vadybininkas
  • Mūsų komanda
  • Case Studies
  • Sužinokite, kaip
    • Tinklaraštis
    • Susitikimai
    • Interneto seminarai
    • Ištekliai
Karjera Susisiekite su mumis
  • Apie mus
  • Paslaugos
    • Programinės įrangos kūrimas
      • Priekinės dalies kūrimas
      • Galinės dalies kūrimas
    • Staff Augmentation
      • Priekinės dalies kūrėjai
      • Atgalinės versijos kūrėjai
      • Duomenų inžinieriai
      • Debesų inžinieriai
      • QA inžinieriai
      • Kita
    • Patariamoji tarnyba
      • Auditas ir konsultacijos
  • Vertė už
    • CEO
    • CTO
    • Pristatymo vadybininkas
  • Mūsų komanda
  • Case Studies
  • Sužinokite, kaip
    • Tinklaraštis
    • Susitikimai
    • Interneto seminarai
    • Ištekliai
Karjera Susisiekite su mumis
Atgal rodyklė GRĮŽTI ATGAL
2022-08-25
Programinės įrangos kūrimas

Rack vaidmuo "Ruby" ekosistemoje

Nicolas Nisoria

Sužinokite daugiau apie stovo vaidmenį "Ruby" ekosistemoje iš mūsų eksperto ir patobulinkite savo "Ruby" žaidimo įgūdžius.

Dirbant su Ruby žiniatinklio svetainė rėmai įprasta laikyti dalykus savaime suprantamais. Žinome, kad sistema tvarkys HTTP užklausas ir vykdys tarpinės programinės įrangos logiką. mus. Kai mums darosi vis įdomiau, pradedame domėtis, kas yra užkulisiuose, ir čia pradedame girdėti apie Racką.

Kas yra stelažai?

Svetainė projektas apibūdinamas kaip "modulinė Ruby žiniatinklio serverio sąsaja". "Rack" yra sąsaja, leidžianti kurti žiniatinklio programas, suvienijanti žiniatinklio serverių, žiniatinklio struktūrų ir tarpinės programinės įrangos API.

stovo rubino schema

Kaip aprašyta pirmiau pateiktame paveikslėlyje, "Rack" veikia kaip tarpininkas tarp mūsų žiniatinklio taikomosios programos ir taikomųjų programų serverio, jis HTTP užklausas supakuoja į paprasčiausią
įmanomas būdas.

Stovo naudojimas

"Rack" programa yra "Ruby" objektas (ne klasė), kuris reaguoja į skambinkite. Jis priima lygiai vieną argumentą, t. y. aplinka ir grąžina neužšaldytą masyvą
lygiai tris reikšmes:

  • Svetainė statusas,
  • . antraštės,
  • ir kūnas.

    Išsamią Rack Application specifikaciją galite rasti čia.

reikalauti 'rack'

klasė RackApp
  def call(env)
        status = 200
        headers = { 'Content-Type' => 'text/html' }
        body = ['<h1>Programėlė "My Rack<h1>']

    [statusas, antraštės, kūnas]
  pabaiga
pabaiga

Rack::Handler

Tvarkyklės sujungia žiniatinklio serverius su "Rack". "Rack" apima "Thin", "WEBrick", "FastCGI", CGI, SCGI ir "LiteSpeed" tvarkykles. Kiekvienas "Rack" palaikantis taikomųjų programų serveris turėtų
pateikti tvarkyklę ryšiui sukurti (Puma turi savo tvarkyklę).Paprastai tvarkyklės aktyvuojamos skambinant MyHandler.run(myapp). Antrasis neprivalomas hash gali būti perduota, kad būtų įtraukta konkretaus serverio konfigūracija.

Thin taikomųjų programų serverio naudojimas

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

Numatytasis konfigūracijos pridėjimo failas yra config.ru ir galite jį vykdyti naudodami rackup komandą konsolėje.

"Rack Middleware

"Rack" leidžia kurti tarpinės programinės įrangos programas (programas tarp pagrindinės žiniatinklio programos ir programų serverio). Šios tarpinės programinės įrangos programos grandininiu būdu sujungiamos ir vykdomos nuosekliai.

"Rack Middleware" turi įgyvendinti visas specifikacijas, susijusias su Stovo naudojimas ir atitikti šiuos reikalavimus:

  • Tai turi būti klasė,
  • turi inicializatorių, kuris gauna tik vieną parametrą (pagrindinę programą),
  • ir iškviesti kitą tarpinę programinę įrangą arba programą.
klasė RackMiddleware
def initialize(app)
@app = app
end
def call(env)
@app.call(env)
end
end

Stovas į praktiką

Dabar, kai jau žinome pagrindinius dalykus, galime sukurti pirmąją "Rack" taikomąją programą su "Rack Middleware" ir paleisti ją naudodami "Puma" (taikomųjų programų serverį).

Įdiekite priklausomybes

Įsitikinkite, kad turite stovas brangakmenis ir puma įdiegtas brangakmenis.

brangakmenis įdiegti lentyną
gem install puma

Sukurti konfigūracijos failą

Pirmiausia turime sukurti failą, pavadintą config.ru ir šiame faile bus naudojama
"Rack::Builder" DSL, kad paleistumėte programą ir pridėtumėte tarpinę programinę įrangą.

Pridėti "Rack" programą

Per config.ru faile pridėsime paprastą "Rack" taikomąją programą, kurią apibrėžėme
ankstesniuose skyriuose.

# config.ru

klasė RackApp
  def call(env)
    status = 200
    headers = { 'Content-Type' =&gt; 'text/html' }
    body = ['<h1>Programėlė "My Rack<h1>']

    [statusas, antraštės, kūnas]
  pabaiga
pabaiga

Pridėti "Rack Middleware

Čia šiek tiek pakeisime savo paprastą tarpinę programinę įrangą, kuri, ją įvykdžius, pridės serverio programinę įrangą į mūsų HTML kūną.

# config.ru

klasė RackMiddleware
  def initialize(app)
    @app = app
  end

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

    body << env['SERVER_SOFTWARE']

    [status, headers, body]
  pabaiga
end

Paleiskite taikomųjų programų serverį

Galiausiai paleisime serverį ir pamatysime, kaip veikia mūsų programa. Mūsų config.ru failas atrodys taip:

# config.ru

klasė RackApp
  def call(env)
    status = 200
    headers = { 'Content-Type' =&gt; 'text/html' }
    body = ['<h1>Programėlė "My Rack<h1>']

    [statusas, antraštės, kūnas]
  pabaiga
pabaiga

klasė 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

naudoti RackMiddleware
paleisti RackApp.new

Paskutinėse eilutėse nurodome tarpinę programinę įrangą naudodami naudoti ir paleidžiame programą naudodami paleisti.Esame pasirengę vykdyti rackup konsolėje ir pamatysite veikiantį serverį. Galime patikrinti prievadą, kuriame veikia mūsų programa, ir prisijungę prie jo turėtume pamatyti kažką panašaus:

Stovo serverio tekstas

Išvados

Kartais naudinga grįžti prie pagrindų ir sužinoti apie įžvalgas apie technologijas, su kuriomis dirbame. Mokymasis "Rack" suteikia mums aiškią architektūros apžvalgą ir atskleidžia "magiją", slypinčią už "Ruby" žiniatinklio karkasai.

bendradarbiavimo vėliava

Susiję straipsniai

E-commerce

Ar Ruby on Rails yra gera technologija MVP kurti?

Minimalus gyvybingas produktas (MVP) yra vienas iš "Lean Startup" metodikos principų. Jo tikslas - padėti verslininkams pradėti mokymosi procesą kuo greičiau...

Nicolas Nisoria

Prenumeruokite mūsų žinių bazę ir būkite nuolat informuoti apie IT sektoriaus patirtį.

    Apie mus

    The Codest - tarptautinė programinės įrangos kūrimo bendrovė, turinti technologijų centrus Lenkijoje.

    Jungtinė Karalystė - būstinė

    • 303B biuras, 182-184 High Street North E6 2JA
      Londonas, Anglija

    Lenkija - vietiniai technologijų centrai

    • Fabryczna biurų parkas, Aleja
      Pokoju 18, 31-564 Krokuva
    • Brain Embassy, Konstruktorska
      11, 02-673 Varšuva, Lenkija

      The Codest

    • Pagrindinis
    • Apie mus
    • Paslaugos
    • Case Studies
    • Sužinokite, kaip
    • Karjera
    • Žodynas

      Paslaugos

    • Patariamoji tarnyba
    • Programinės įrangos kūrimas
    • Galinės dalies kūrimas
    • Priekinės dalies kūrimas
    • Staff Augmentation
    • Atgalinės versijos kūrėjai
    • Debesų inžinieriai
    • Duomenų inžinieriai
    • Kita
    • QA inžinieriai

      Ištekliai

    • Faktai ir mitai apie bendradarbiavimą su išoriniu programinės įrangos kūrimo partneriu
    • Iš JAV į Europą: Kodėl Amerikos startuoliai nusprendžia persikelti į Europą?
    • Technikos plėtros centrų užsienyje palyginimas: Tech Offshore Europa (Lenkija), ASEAN (Filipinai), Eurazija (Turkija)
    • Kokie yra svarbiausi CTO ir CIO iššūkiai?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Autorinės teisės © 2026 The Codest. Visos teisės saugomos.

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