The Codest
  • Par mums
  • Pakalpojumi
    • Programmatūras izstrāde
      • Frontend izveide
      • Backend izstrāde
    • Staff Augmentation
      • Frontend izstrādātāji
      • Backend izstrādātāji
      • Datu inženieri
      • Mākoņa inženieri
      • QA inženieri
      • Citi
    • Tā Konsultatīvais dienests
      • Audits un konsultācijas
  • Nozares
    • Fintech un banku darbība
    • E-commerce
    • Adtech
    • Healthtech
    • Ražošana
    • Loģistika
    • Automobiļu nozare
    • IOT
  • Vērtība par
    • CEO
    • CTO
    • Piegādes vadītājs
  • Mūsu komanda
  • Case Studies
  • Zināt, kā
    • Blogs
    • Tikšanās
    • Tiešsaistes semināri
    • Resursi
Karjera Sazinieties ar mums
  • Par mums
  • Pakalpojumi
    • Programmatūras izstrāde
      • Frontend izveide
      • Backend izstrāde
    • Staff Augmentation
      • Frontend izstrādātāji
      • Backend izstrādātāji
      • Datu inženieri
      • Mākoņa inženieri
      • QA inženieri
      • Citi
    • Tā Konsultatīvais dienests
      • Audits un konsultācijas
  • Vērtība par
    • CEO
    • CTO
    • Piegādes vadītājs
  • Mūsu komanda
  • Case Studies
  • Zināt, kā
    • Blogs
    • Tikšanās
    • Tiešsaistes semināri
    • Resursi
Karjera Sazinieties ar mums
Atpakaļ bultiņa ATGRIEZTIES ATPAKAĻ
2022-08-25
Programmatūras izstrāde

Rack loma Ruby ekosistēmā

Nicolas Nisoria

Uzziniet vairāk par plauktu lomu Ruby ekosistēmā no mūsu eksperta un uzlabojiet savas rubīna spēles prasmes.

Strādājot ar Rubīns tīmekļa vietne ietvari ir ierasts uzskatīt lietas par pašsaprotamām. Mēs zinām, ka ietvars apstrādās HTTP pieprasījumus un izpildīs starpprogrammatūras loģiku, lai mums. Kad kļūstam ziņkārīgāki, mēs sākam interesēties, kas ir aizkulisēs, tur mēs sākam dzirdēt par Rack.

Kas ir Rack?

Portāls projekts ir aprakstīts kā "Modulāra Ruby tīmekļa servera saskarne". Rack ir saskarne, kas ļauj mums izveidot tīmekļa lietojumprogrammas, apvienojot API tīmekļa serveriem, tīmekļa ietvariem un starpprogrammatūrai.

plaukts rubīns shēma

Kā aprakstīts iepriekšējā attēlā, Rack darbojas kā starpnieks starp mūsu tīmekļa lietojumprogrammu un lietojumprogrammu serveri, tas ietin HTTP pieprasījumus visvienkāršākajā veidā.
veids, kā tas ir iespējams.

Plaukts Pieteikums

Rack lietojumprogramma ir Ruby objekts (nevis klase), kas reaģē uz zvaniet. Tas izmanto tikai vienu argumentu, proti. vide un atgriež neaizsaldētu masīvu
tieši trīs vērtības:

  • Portāls statuss,
  • . galvenes,
  • un ķermenis.

    Varat atrast detalizētu statīva lietojumprogrammas specifikāciju. šeit.

prasīt 'plaukts'

klase RackApp
  def call(env)
        status = 200
        headers = { 'Content-Type' => 'text/html' }
        body = ['<h1>Lietotne Mans plaukts<h1>']

    [statuss, galvenes, ķermenis]
  beigas
beigas

Rack::Handler

Apkalpotāji savieno tīmekļa serverus ar Rack. Rack ietver Thin, WEBrick, FastCGI, CGI, SCGI un LiteSpeed rīkus. Katram lietojumprogrammu serverim, kas atbalsta Rack
nodrošina apstrādātāju savienojuma izveidei (Puma ir savs apstrādātājs).Apstrādātāji parasti tiek aktivizēti, izsaucot MyHandler.run(myapp). Otrs izvēles hash var nosūtīt, lai iekļautu serverim specifisku konfigurāciju.

Plānā lietojumprogrammu servera izmantošana

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

Noklusējuma fails konfigurācijas pievienošanai ir config.ru un varat to izpildīt, izmantojot rackup komandu savā konsoles logā.

Rack starpprogrammatūra

Rack ļauj mums izveidot starpprogrammatūras lietojumprogrammas (lietojumprogrammas starp mūsu galveno tīmekļa lietojumprogrammu un lietojumprogrammu serveri). Šīs starpprogrammatūras lietojumprogrammas tiek sasaistītas un izpildītas secīgi.

Rack Middleware jāīsteno visas specifikācijas, kas attiecas uz Plaukts Pieteikums un atbilst šādiem punktiem:

  • Tai jābūt klasei,
  • ir inicializators, kas saņem tikai vienu parametru (galveno lietojumprogrammu),
  • un izsaukt nākamo starpprogrammatūru vai lietojumprogrammu.
klase RackMiddleware
def initialize(app)
@app = app
end
def call(env)
@app.call(env)
end
end

Plaukts praksē

Tagad, kad zinām pamatus, esam gatavi izveidot savu pirmo Rack lietojumprogrammu ar Rack Middleware un palaist to, izmantojot Puma (lietojumprogrammu serveri).

Atkarību instalēšana

Pārliecinieties, ka jums ir plaukts dārgakmens un puma uzstādīts dārgakmens.

gem instalēt plaukts
gem instalēt puma

Izveidot konfigurācijas failu

Vispirms mums ir jāizveido fails ar nosaukumu config.ru un šis fails izmantos
Rack::Builder DSL, lai palaistu lietojumprogrammu un pievienotu starpprogrammatūru.

Statņa lietojumprogrammas pievienošana

ietvaros config.ru failā mēs pievienosim vienkāršo Rack lietojumprogrammu, ko definējām
iepriekšējās sadaļās.

# config.ru

klase RackApp
  def call(env)
    status = 200
    headers = { 'Content-Type' =&gt; 'text/html' }
    body = ['<h1>Lietotne Mans plaukts<h1>']

    [statuss, galvenes, ķermenis]
  beigas
beigas

Rack starpprogrammatūras pievienošana

Šeit mēs nedaudz pārveidosim mūsu vienkāršo starpprogrammatūru, un tagad tā pēc izpildes pievienos servera programmatūru mūsu HTML korpusam.

# config.ru

klase 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

Lietojumprogrammu servera palaišana

Kā pēdējo soli mēs palaidīsim serveri un redzēsim, kā darbojas mūsu lietojumprogramma. Mūsu config.ru fails izskatīsies šādi:

# config.ru

klase RackApp
  def call(env)
    status = 200
    headers = { 'Content-Type' =&gt; 'text/html' }
    body = ['<h1>Lietotne Mans plaukts<h1>']

    [statuss, galvenes, ķermenis]
  beigas
beigas

klase 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

izmantot RackMiddleware
palaist RackApp.new

Pēdējās rindās norādām starpprogrammatūru, izmantojot izmantot un mēs palaižam lietojumprogrammu, izmantojot palaist.Mēs esam gatavi izpildīt rackup mūsu konsoles logā un redzēsiet, ka serveris darbojas. Mēs varam pārbaudīt portu, kurā darbojas mūsu lietojumprogramma, un pēc piekļuves tai mums vajadzētu redzēt kaut ko līdzīgu:

plaukts servera teksts

Secinājumi

Dažreiz ir labi atgriezties pie pamatiem un iepazīt tehnoloģiju, ar kurām strādājam, ieskatu. Mācīšanās Rack sniedz mums skaidru pārskatu par arhitektūru un atklāj "maģiju" aiz tās. Ruby tīmekļa ietvarstruktūras.

sadarbības baneris

Saistītie raksti

E-commerce

Vai Ruby on Rails ir laba tehnoloģija MVP izveidei?

Minimālais dzīvotspējīgais produkts (MVP) ir viens no Lean Startup metodoloģijas principiem. Mērķis ir palīdzēt uzņēmējiem sākt mācīšanās procesu pēc iespējas ātrāk, lai...

Nicolas Nisoria

Abonējiet mūsu zināšanu bāzi un saņemiet jaunāko informāciju par IT nozares pieredzi.

    Par mums

    The Codest - starptautisks programmatūras izstrādes uzņēmums ar tehnoloģiju centriem Polijā.

    Apvienotā Karaliste - Galvenā mītne

    • 303B birojs, 182-184 High Street North E6 2JA
      Londona, Anglija

    Polija - Vietējie tehnoloģiju centri

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Krakova
    • Brain Embassy, Konstruktorska
      11, 02-673 Varšava, Polija

      The Codest

    • Sākums
    • Par mums
    • Pakalpojumi
    • Case Studies
    • Zināt, kā
    • Karjera
    • Vārdnīca

      Pakalpojumi

    • Tā Konsultatīvais dienests
    • Programmatūras izstrāde
    • Backend izstrāde
    • Frontend izveide
    • Staff Augmentation
    • Backend izstrādātāji
    • Mākoņa inženieri
    • Datu inženieri
    • Citi
    • QA inženieri

      Resursi

    • Fakti un mīti par sadarbību ar ārējo programmatūras izstrādes partneri
    • No ASV uz Eiropu: Kāpēc Amerikas jaunuzņēmumi nolemj pārcelties uz Eiropu?
    • Tehnoloģiju ārzonas attīstības centru salīdzinājums: Tech Offshore Eiropa (Polija), ASEAN (Filipīnas), Eirāzija (Turcija)
    • Kādi ir galvenie CTO un CIO izaicinājumi?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Autortiesības © 2026 The Codest. Visas tiesības aizsargātas.

    lvLatvian
    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 lt_LTLithuanian lvLatvian