Υπάρχει πολλή συζήτηση για Ράφι, αλλά αν δεν είστε ο ίδιος ο δημιουργός πλαισίου, σπάνια το βλέπετε. Τι είναι η Rack; Και γιατί, ως προγραμματιστής εφαρμογών, θα πρέπει να σας ενδιαφέρει;
Rack Basics
Rack είναι ένα είδος middleware. Βρίσκεται ανάμεσα στην εφαρμογή web και τον διακομιστή ιστού. Διαχειρίζεται όλες τις συγκεκριμένες κλήσεις API για το διακομιστή, μεταβιβάζει το αίτημα HTTP και όλες τις παραμέτρους περιβάλλοντος σε ένα hash και δίνει την απάντηση της εφαρμογής σας στον server. Με άλλα λόγια, η αίτησή σας δεν χρειάζεται να ξέρει πώς να μιλήσει σε ένα διακομιστή HTTP, πρέπει να ξέρει πώς να μιλήσει με το Rack.
Πλεονεκτήματα της Rack
Αυτό έχει πολλά πλεονεκτήματα. Αρχικά, μιλάμε με το Rack είναι εύκολο (όπως θα δείτε παρακάτω). Δεύτερον, επειδή χρειάζεται μόνο να ξέρετε πώς να μιλήσετε με το Rack και ο Rack ξέρει να μιλά με πολλούς διαφορετικούς διακομιστές HTTP, η εφαρμογή σας θα τρέχει σε οποιονδήποτε από αυτούς τους διακομιστές HTTP. Το Rack είναι σαν ένα καθολικό προσαρμογέα για εφαρμογές ιστού.
Οι εφαρμογές Rack οι ίδιοι δεν είναι τίποτα ιδιαίτερο. Στην πραγματικότητα, το Rack API είναι τόσο νεκρό απλό, μπορεί να περιγραφεί σε μία μόνο φράση:
Μια εφαρμογή Rack είναι οποιοδήποτε αντικείμενο Ruby που ανταποκρίνεται στο κλήση, λαμβάνει μια μοναδική παράμετρο hash και επιστρέφει έναν πίνακα που περιέχει τον κώδικα κατάστασης απόκρισης, τις κεφαλίδες απόκρισης HTTP και το σώμα απόκρισης ως μια σειρά από χορδές.
Αυτό είναι λίγο πολύ. Ακούγεται πολύ απλό για να είναι αληθινό, ή τουλάχιστον πολύ απλό για να είναι χρήσιμο, αλλά όταν πραγματικά καταλήγει σε αυτό, αυτό είναι το μόνο που κάνετε πραγματικά όταν μιλάτε με διακομιστές HTTP.
Γιατί είναι σημαντική η σχάρα;
Αλλά για το πραγματικό ερώτημα: Γιατί, ως προγραμματιστής εφαρμογών, θα πρέπει να σας ενδιαφέρει η Rack; Πρώτα απ 'όλα, υπάρχει πάντα διαφωτισμός στην κατανόηση του τρόπου λειτουργίας του πλαισίου σας. Αλλά το πιο σημαντικό, υπάρχουν χρήσιμα πράγματα που μπορείτε να κάνετε με το Rack. Το πιο σημαντικό: ενδιάμεσο λογισμικό.
Τώρα, αυτό ακούγεται λίγο περίεργο. Αλλά ένα επιπλέον στρώμα μεταξύ της εφαρμογής σας και του Rack μπορεί να είναι ένα καλό πράγμα και να εφαρμόσει χαρακτηριστικά που θα γεμίζουν μόνο την αίτησή σας. Αυτό που κάνει αυτό το middleware είναι να πάρει απλά το αίτημα από το Rack, να το μεταβιβάσει στην αίτησή σας, να πάρει το δικό του απάντηση, προσθέστε κάτι σε αυτό ή φίλτρο ή κάτι σε αυτές τις γραμμές και στη συνέχεια περάστε την απάντηση πίσω Ράφι. Αυτό μπορεί να χρησιμοποιηθεί για την εφαρμογή πολύ ενδιαφέρουσα χαρακτηριστικά, όπως ένας διακομιστής-agnostic καταγραφέας, ή ένα αίτημα ο έλεγχος νοοτροπίας ή ένα μικρό μεσαίο λογισμικό που στέλνει μηνύματα σε έναν διαχειριστή κάθε φορά που η αίτησή σας επανέρχεται με ένα 404. Κανένα από αυτά τα χαρακτηριστικά δεν χρειάζεται να γεμίσει την εφαρμογή σας, μπορούν να υλοποιηθούν ως μεσαία λογισμικά με Rack.