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 υπάρχει ήδη') } 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 }) }, } } })() Ο ρόλος του Rack στο οικοσύστημα Ruby - The Codest
The Codest
  • Σχετικά με εμάς
  • Υπηρεσίες
    • Ανάπτυξη λογισμικού
      • Ανάπτυξη Frontend
      • Backend Ανάπτυξη
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Μηχανικοί δεδομένων
      • Μηχανικοί cloud
      • Μηχανικοί QA
      • Άλλα
    • Συμβουλευτική
      • Έλεγχος & Συμβουλευτική
  • Βιομηχανίες
    • Fintech & Τραπεζική
    • E-commerce
    • Adtech
    • Healthtech
    • Κατασκευή
    • Εφοδιαστική
    • Αυτοκίνητο
    • IOT
  • Αξία για
    • CEO
    • CTO
    • Διευθυντής παράδοσης
  • Η ομάδα μας
  • Case Studies
  • Μάθετε πώς
    • Blog
    • Συναντήσεις
    • Διαδικτυακά σεμινάρια
    • Πόροι
Καριέρα Ελάτε σε επαφή
  • Σχετικά με εμάς
  • Υπηρεσίες
    • Ανάπτυξη λογισμικού
      • Ανάπτυξη Frontend
      • Backend Ανάπτυξη
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Μηχανικοί δεδομένων
      • Μηχανικοί cloud
      • Μηχανικοί QA
      • Άλλα
    • Συμβουλευτική
      • Έλεγχος & Συμβουλευτική
  • Αξία για
    • CEO
    • CTO
    • Διευθυντής παράδοσης
  • Η ομάδα μας
  • Case Studies
  • Μάθετε πώς
    • Blog
    • Συναντήσεις
    • Διαδικτυακά σεμινάρια
    • Πόροι
Καριέρα Ελάτε σε επαφή
Πίσω βέλος GO BACK
2022-08-25
Ανάπτυξη λογισμικού

Ο ρόλος του Rack στο οικοσύστημα Ruby

Nicolas Nisoria

Μάθετε περισσότερα για το ρόλο του rack στο οικοσύστημα της Ruby από τον ειδικό μας και βελτιώστε τις ικανότητές σας στο παιχνίδι της Ruby.

Ενώ εργάζεται με Ruby web frameworks είναι σύνηθες να θεωρούμε τα πράγματα δεδομένα. Γνωρίζουμε ότι το πλαίσιο θα χειριστεί τις αιτήσεις HTTP και θα εκτελέσει τη λογική του ενδιάμεσου λογισμικού για εμάς. Καθώς γινόμαστε πιο περίεργοι αρχίζουμε να αναρωτιόμαστε τι υπάρχει πίσω από τα παρασκήνια, εκεί είναι που αρχίζουμε να ακούμε για το Rack.

Τι είναι το Rack;

Το έργο περιγράφεται ως "Μια αρθρωτή διεπαφή διακομιστή ιστού Ruby". Το Rack είναι η διεπαφή που μας επιτρέπει να δημιουργήσουμε εφαρμογές ιστού ενοποιώντας το API για διακομιστές ιστού, web frameworks και middleware.

rack ruby scheme

Όπως περιγράφεται στην παραπάνω εικόνα, το Rack ενεργεί ως μεσάζων μεταξύ της Web Application και του Application Server, τυλίγει τα HTTP requests με τον πιο απλό
δυνατό τρόπο.

Εφαρμογή Rack

Μια εφαρμογή Rack είναι ένα αντικείμενο Ruby (όχι μια κλάση) που ανταποκρίνεται σε κλήση. Παίρνει ακριβώς ένα όρισμα, το περιβάλλον και επιστρέφει ένα μη παγωμένο Array των
ακριβώς τρεις τιμές:

  • Το κατάσταση,
  • το επικεφαλίδες,
  • και το σώμα.

    Μπορείτε να βρείτε τις λεπτομερείς προδιαγραφές μιας εφαρμογής Rack εδώ.

απαιτούν 'rack'

κλάση RackApp
  def call(env)
        status = 200
        headers = { 'Content-Type' => 'text/html' }
        body = ['<h1>Η εφαρμογή My Rack App<h1>']

    [status, headers, body]
  end
end

Rack::Handler

Οι χειριστές συνδέουν διακομιστές ιστού με το Rack. Το Rack περιλαμβάνει χειριστές για Thin, WEBrick, FastCGI, CGI, SCGI και LiteSpeed. Κάθε διακομιστής εφαρμογών που υποστηρίζει το Rack θα πρέπει
παρέχουν έναν χειριστή για τη δημιουργία της σύνδεσης (το Puma έχει το δικό του χειριστή).Οι χειριστές συνήθως ενεργοποιούνται με την κλήση του MyHandler.run(myapp). Ένα δεύτερο προαιρετικό hash μπορεί να περάσει για να συμπεριλάβει ρυθμίσεις που αφορούν τον διακομιστή.

Χρήση Thin application server

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

Το προεπιλεγμένο αρχείο για την προσθήκη των ρυθμίσεων είναι config.ru και μπορείτε να το εκτελέσετε χρησιμοποιώντας rackup στην κονσόλα σας.

Rack Middleware

Το Rack μας επιτρέπει να δημιουργήσουμε εφαρμογές middleware (εφαρμογές μεταξύ της κύριας διαδικτυακής εφαρμογής μας και του διακομιστή εφαρμογών). Αυτές οι εφαρμογές middleware συνδέονται μεταξύ τους και εκτελούνται διαδοχικά.

Το Rack Middleware πρέπει να εφαρμόζει όλες τις προδιαγραφές ενός Εφαρμογή Rack και να πληρούν τα ακόλουθα σημεία:

  • Πρέπει να είναι μια τάξη,
  • έχουν έναν αρχικοποιητή που λαμβάνει μόνο μία παράμετρο (την κύρια εφαρμογή),
  • και καλεί το επόμενο ενδιάμεσο λογισμικό ή την εφαρμογή.
class RackMiddleware
def initialize(app)
@app = app
end
def call(env)
@app.call(env)
end
end

Rack στην πράξη

Τώρα που γνωρίζουμε τα βασικά, είμαστε έτοιμοι να δημιουργήσουμε την πρώτη μας εφαρμογή Rack με Rack Middleware και να την εκτελέσουμε χρησιμοποιώντας το Puma (Application Server).

Εγκαταστήστε τις εξαρτήσεις

Βεβαιωθείτε ότι έχετε το rack πολύτιμος λίθος και το puma gem εγκατεστημένο.

gem εγκαταστήστε rack
εγκατάσταση πολύτιμων λίθων puma

Δημιουργία του αρχείου ρυθμίσεων

Πρώτα, πρέπει να δημιουργήσουμε ένα αρχείο με όνομα config.ru και αυτό το αρχείο θα κάνει χρήση της
το Rack::Builder DSL για να εκτελέσετε την εφαρμογή και να προσθέσετε το ενδιάμεσο λογισμικό.

Προσθέστε την εφαρμογή Rack

Εντός του config.ru θα προσθέσουμε την απλή εφαρμογή Rack που ορίσαμε στο αρχείο
τις προηγούμενες ενότητες.

# config.ru

κλάση RackApp
  def call(env)
    status = 200
    headers = { 'Content-Type' =&gt; 'text/html' }
    body = ['<h1>Η εφαρμογή My Rack App<h1>']

    [status, headers, body]
  end
end

Προσθέστε το Rack Middleware

Εδώ θα κάνουμε μια μικρή τροποποίηση στο απλό ενδιάμεσο λογισμικό μας και τώρα θα προσθέσει το λογισμικό του διακομιστή στο σώμα HTML μετά την εκτέλεσή του.

# 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

Εκτελέστε τον διακομιστή εφαρμογών

Ως τελευταίο βήμα, θα τρέξουμε τον διακομιστή και θα δούμε την εφαρμογή μας να εκτελείται. Το μας config.ru θα έχει την ακόλουθη μορφή:

# config.ru

κλάση RackApp
  def call(env)
    status = 200
    headers = { 'Content-Type' =&gt; '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 <&lt; env[&#039;SERVER_SOFTWARE&#039;]

    [status, headers, body]
  end
end

use RackMiddleware
run RackApp.new

Στις τελευταίες γραμμές, καθορίζουμε το ενδιάμεσο λογισμικό χρησιμοποιώντας χρήση και εκτελούμε την εφαρμογή χρησιμοποιώντας τρέχει.Είμαστε έτοιμοι να εκτελέσουμε rackup στην κονσόλα μας και βλέπουμε τον διακομιστή να τρέχει. Μπορούμε να ελέγξουμε τη θύρα στην οποία εκτελείται η εφαρμογή μας και θα πρέπει να δούμε κάτι τέτοιο μετά την πρόσβαση σε αυτήν:

κείμενο διακομιστή rack

Συμπεράσματα

Μερικές φορές είναι καλό να επιστρέφουμε στα βασικά και να μαθαίνουμε τις γνώσεις για την τεχνολογία με την οποία εργαζόμαστε. Η εκμάθηση του Rack μας δίνει μια σαφή εικόνα της αρχιτεκτονικής και αποκαλύπτει τη "μαγεία" πίσω από την Ruby Web Frameworks.

πανό συνεργασίας

Σχετικά άρθρα

Ανάπτυξη λογισμικού

GraphQL Ruby. Τι γίνεται με τις επιδόσεις;

Η GraphQL, όπως κάθε τεχνολογία, έχει τα προβλήματά της, ορισμένα από αυτά προκύπτουν άμεσα από την αρχιτεκτονική και ορισμένα είναι πανομοιότυπα με αυτά που βλέπουμε σε οποιαδήποτε άλλη εφαρμογή. Ωστόσο, οι λύσεις...

The Codest
Tomasz Szkaradek Αρχιτέκτονας ανάπτυξης
Ανάπτυξη λογισμικού

Μια απλή εφαρμογή Ruby από την αρχή με Active Record

Το MVC είναι ένα μοτίβο σχεδίασης που διαχωρίζει τις αρμοδιότητες μιας εφαρμογής για να διευκολύνει τη μετακίνησή της. Το Rails ακολουθεί αυτό το μοτίβο σχεδίασης κατά σύμβαση.

The Codest
Damian Watroba Software Engineer
E-commerce

Είναι το Ruby on Rails μια καλή τεχνολογία για την κατασκευή ενός MVP;

Το ελάχιστο βιώσιμο προϊόν (MVP) είναι μία από τις αρχές της μεθοδολογίας Lean Startup. Ο στόχος είναι να βοηθήσει τους επιχειρηματίες να ξεκινήσουν τη διαδικασία μάθησης το συντομότερο δυνατό...

Nicolas Nisoria

Εγγραφείτε στη βάση γνώσεών μας και μείνετε ενήμεροι για την τεχνογνωσία από τον τομέα της πληροφορικής.

    Σχετικά με εμάς

    The Codest - Διεθνής εταιρεία ανάπτυξης λογισμικού με κέντρα τεχνολογίας στην Πολωνία.

    Ηνωμένο Βασίλειο - Έδρα

    • Γραφείο 303B, 182-184 High Street North E6 2JA
      Λονδίνο, Αγγλία

    Πολωνία - Τοπικοί κόμβοι τεχνολογίας

    • Πάρκο γραφείων Fabryczna, Aleja
      Pokoju 18, 31-564 Κρακοβία
    • Πρεσβεία του εγκεφάλου, Konstruktorska
      11, 02-673 Βαρσοβία, Πολωνία

      The Codest

    • Αρχική σελίδα
    • Σχετικά με εμάς
    • Υπηρεσίες
    • Case Studies
    • Μάθετε πώς
    • Καριέρα
    • Λεξικό

      Υπηρεσίες

    • Συμβουλευτική
    • Ανάπτυξη λογισμικού
    • Backend Ανάπτυξη
    • Ανάπτυξη Frontend
    • Staff Augmentation
    • Backend Developers
    • Μηχανικοί cloud
    • Μηχανικοί δεδομένων
    • Άλλα
    • Μηχανικοί QA

      Πόροι

    • Γεγονότα και μύθοι σχετικά με τη συνεργασία με εξωτερικό συνεργάτη ανάπτυξης λογισμικού
    • Από τις ΗΠΑ στην Ευρώπη: Γιατί οι αμερικανικές νεοσύστατες επιχειρήσεις αποφασίζουν να μετεγκατασταθούν στην Ευρώπη
    • Σύγκριση υπεράκτιων κόμβων ανάπτυξης τεχνολογίας: Ευρώπη (Πολωνία), ASEAN (Φιλιππίνες), Ευρασία (Τουρκία)
    • Ποιες είναι οι κορυφαίες προκλήσεις των CTOs και των CIOs;
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Πνευματικά δικαιώματα © 2025 από The Codest. Όλα τα δικαιώματα διατηρούνται.

    elGreek
    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 etEstonian elGreek