window.pipedriveLeadboosterConfig = { basis: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', versie: 2, } ;(functie () { var w = venster als (w.LeadBooster) { console.warn('LeadBooster bestaat al') } anders { w.LeadBooster = { q: [], on: functie (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: functie (n) { this.q.push({ t: 't', n: n }) }, } } })() De rol van Rack in het Ruby-ecosysteem - The Codest
The Codest
  • Over ons
  • Diensten
    • Software Ontwikkeling
      • Frontend ontwikkeling
      • Backend ontwikkeling
    • Staff Augmentation
      • Frontend ontwikkelaars
      • Backend ontwikkelaars
      • Gegevensingenieurs
      • Cloud Ingenieurs
      • QA ingenieurs
      • Andere
    • Het advies
      • Audit & Consulting
  • Industrie
    • Fintech & Bankieren
    • E-commerce
    • Adtech
    • Gezondheidstechnologie
    • Productie
    • Logistiek
    • Automotive
    • IOT
  • Waarde voor
    • CEO
    • CTO
    • Leveringsmanager
  • Ons team
  • Case Studies
  • Weten hoe
    • Blog
    • Ontmoetingen
    • Webinars
    • Bronnen
Carrière Neem contact op
  • Over ons
  • Diensten
    • Software Ontwikkeling
      • Frontend ontwikkeling
      • Backend ontwikkeling
    • Staff Augmentation
      • Frontend ontwikkelaars
      • Backend ontwikkelaars
      • Gegevensingenieurs
      • Cloud Ingenieurs
      • QA ingenieurs
      • Andere
    • Het advies
      • Audit & Consulting
  • Waarde voor
    • CEO
    • CTO
    • Leveringsmanager
  • Ons team
  • Case Studies
  • Weten hoe
    • Blog
    • Ontmoetingen
    • Webinars
    • Bronnen
Carrière Neem contact op
Pijl terug KEREN TERUG
2022-08-25
Software Ontwikkeling

De rol van Rack in het Ruby-ecosysteem

Nicolas Nisoria

Leer meer over de rol van rack in het ecosysteem van Ruby van onze expert en verbeter je ruby spel.

Tijdens het werken met Ruby webraamwerken is het gebruikelijk om dingen als vanzelfsprekend aan te nemen. We weten dat het framework de HTTP-verzoeken afhandelt en de middleware-logica voor ons uitvoert. Naarmate we nieuwsgieriger worden, beginnen we ons af te vragen wat er zich achter de schermen afspeelt en dat is waar we over Rack beginnen te horen.

Wat is Rack?

De project wordt beschreven als "Een modulaire Ruby webserverinterface". Rack is de interface waarmee we webapplicaties kunnen maken die de API voor webservers, webframeworks en middleware verenigen.

rek robijn schema

Zoals beschreven in de bovenstaande afbeelding, fungeert Rack als tussenpersoon tussen onze webapplicatie en de applicatieserver, het verpakt de HTTP-verzoeken in de eenvoudigste
manier mogelijk.

Rek Toepassing

Een Rack-applicatie is een Ruby-object (geen klasse) dat reageert op bel. Het neemt precies één argument, de omgeving en retourneert een niet-bevroren array van
precies drie waarden:

  • De status,
  • de kopteksten,
  • en de lichaam.

    U vindt de gedetailleerde specificatie van een Rack Application hier.

vereisen 'rek'

klasse RackApp
  def aanroep(env)
        status = 200
        headers = { 'Content-Type' => 'text/html' }
        body = ['<h1>Mijn Rack-app<h1>']

    [status, headers, body].
  einde
einde

Rack::Handler

Handlers verbinden webservers met Rack. Rack bevat Handlers voor Thin, WEBrick, FastCGI, CGI, SCGI en LiteSpeed. Elke applicatieserver die Rack ondersteunt moet
bieden een handler om de verbinding te maken (Puma heeft zijn eigen handler).Handlers worden meestal geactiveerd door het aanroepen van MyHandler.run(myapp). Een tweede optionele hash kan worden doorgegeven om server-specifieke configuratie op te nemen.

Thin-toepassingsserver gebruiken

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

Het standaardbestand om de configuratie toe te voegen is config.ru en u kunt het uitvoeren met rackup commando in de console.

Rack middleware

Met Rack kunnen we middleware-applicaties maken (applicaties tussen onze hoofdwebapplicatie en de applicatieserver). Deze middleware-applicaties worden aan elkaar gekoppeld en sequentieel uitgevoerd.

Rack Middleware moet alle specificaties van een Rek Toepassing en voldoen aan de volgende punten:

  • Het moet een klas zijn,
  • hebben een initializer die slechts één parameter ontvangt (de hoofdtoepassing),
  • en de volgende middleware of applicatie aanroepen.
klasse RackMiddleware
def initialiseer(app)
@app = app
einde
def aanroep(env)
@app.call(env)
einde
einde

Rack in de praktijk

Nu we de basis kennen, zijn we klaar om onze eerste Rack-applicatie met Rack Middleware te maken en uit te voeren met Puma (applicatieserver).

De afhankelijkheden installeren

Zorg ervoor dat je de rek edelsteen en de puma gem geïnstalleerd.

gem install rack
gem installeren puma

Het configuratiebestand maken

Eerst moeten we een bestand maken met de naam config.ru en dit bestand zal gebruik maken van
de Rack::Builder DSL om de toepassing uit te voeren en de middleware toe te voegen.

De Rack-toepassing toevoegen

Binnen de config.ru bestand voegen we de eenvoudige Rack applicatie toe die we gedefinieerd hebben in
de vorige secties.

# config.ru

klasse RackApp
  def aanroep(env)
    status = 200
    headers = { 'Content-Type' =&gt; 'text/html' }
    body = ['<h1>Mijn Rack-app<h1>']

    [status, headers, body].
  einde
einde

De Rack Middleware toevoegen

Hier maken we een kleine aanpassing aan onze eenvoudige middleware en nu zal het de serversoftware toevoegen aan onze HTML body nadat het is uitgevoerd.

# config.ru

klasse RackMiddleware
  def initialiseer(app)
    @app = app
  einde

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

    body << env['SERVER_SOFTWARE'].

    [status, headers, body]
  einde
einde

De applicatieserver starten

Als laatste stap laten we de server draaien en zien we onze applicatie draaien. Onze config.ru bestand er als volgt uit:

# config.ru

klasse RackApp
  def aanroep(env)
    status = 200
    headers = { 'Content-Type' =&gt; 'text/html' }
    body = ['<h1>Mijn Rack-app<h1>']

    [status, headers, body].
  einde
einde

klasse RackMiddleware
  def initialiseer(app)
    @app = app
  einde

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

    lichaam <&lt; env[&#039;SERVER_SOFTWARE&#039;]

    [status, headers, body].
  einde
einde

gebruik RackMiddleware
uitvoeren RackApp.new

In de laatste regels specificeren we de middleware met behulp van gebruik en we voeren de toepassing uit met rennen.We zijn klaar om uit te voeren rackup in onze console en zien dat de server draait. We kunnen de poort controleren waarop onze applicatie draait en we zouden iets als dit moeten zien na het openen:

tekst voor rekservers

Conclusies

Soms is het goed om terug te gaan naar de basis en te leren over de inzichten in de technologie waar we mee werken. Het leren van Rack geeft ons een duidelijk overzicht van de architectuur en onthult de "magie" achter de Ruby webraamwerken.

vaandel samenwerking

Verwante artikelen

Software Ontwikkeling

GraphQL Ruby. Hoe zit het met de prestaties?

GraphQL heeft, net als elke technologie, zijn problemen, waarvan sommige direct voortvloeien uit de architectuur en sommige identiek zijn aan wat we in elke andere toepassing zien. De oplossingen...

The Codest
Tomasz Szkaradek Ontwikkelingsarchitect
Software Ontwikkeling

Een eenvoudige Ruby-applicatie vanaf nul met Active Record

MVC is een ontwerppatroon dat de verantwoordelijkheden van een toepassing verdeelt om ze gemakkelijker te kunnen verplaatsen. Rails volgt dit ontwerppatroon volgens conventie.

The Codest
Damian Watroba Software Engineer
E-commerce

Is Ruby on Rails een goede technologie om een MVP te bouwen?

Een minimum viable product (MVP) is een van de principes van de Lean Startup Methodologie. Het doel is om de ondernemers te helpen het proces van...

Nicolas Nisoria

Abonneer je op onze kennisbank en blijf op de hoogte van de expertise uit de IT-sector.

    Over ons

    The Codest - Internationaal softwareontwikkelingsbedrijf met technische hubs in Polen.

    Verenigd Koninkrijk - Hoofdkantoor

    • Kantoor 303B, 182-184 High Street North E6 2JA
      Londen, Engeland

    Polen - Lokale technologieknooppunten

    • Fabryczna kantorenpark, Aleja
      Pokoju 18, 31-564 Krakau
    • Hersenambassade, Konstruktorska
      11, 02-673 Warschau, Polen

      The Codest

    • Home
    • Over ons
    • Diensten
    • Case Studies
    • Weten hoe
    • Carrière
    • Woordenboek

      Diensten

    • Het advies
    • Software Ontwikkeling
    • Backend ontwikkeling
    • Frontend ontwikkeling
    • Staff Augmentation
    • Backend ontwikkelaars
    • Cloud Ingenieurs
    • Gegevensingenieurs
    • Andere
    • QA ingenieurs

      Bronnen

    • Feiten en fabels over samenwerken met een externe partner voor softwareontwikkeling
    • Van de VS naar Europa: Waarom Amerikaanse startups besluiten naar Europa te verhuizen
    • Tech Offshore Ontwikkelingshubs Vergelijking: Tech Offshore Europa (Polen), ASEAN (Filippijnen), Eurazië (Turkije)
    • Wat zijn de grootste uitdagingen voor CTO's en CIO's?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Gebruiksvoorwaarden website

    Copyright © 2025 door The Codest. Alle rechten voorbehouden.

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