(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f), })(window,document,'script','dataLayer','GTM-5LLHNRP9'),; thecodest, Συγγραφέας στο The Codest - Σελίδα 9 από 13

Εισαγωγή

Για να μιλήσουμε για Packwerk, πρέπει πρώτα να παρουσιάσουμε μερικές έννοιες.

Προβλήματα

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

Σε μια προσπάθεια να αρθρωθεί ο μονόλιθος του Shopify και να επιβληθούν όρια, δοκίμασαν διαφορετικές λύσεις χωρίς να επιτύχουν τα αναμενόμενα αποτελέσματα:
- Ορισμός ιδιωτικών σταθερών,
- Καθιέρωση ορίων μέσω πολύτιμων λίθων,
- Χρήση δοκιμών για την αποτροπή συσχετίσεων μεταξύ συστατικών,
- Χρησιμοποιώντας το διαμαντάκι διαμόρφωσης της Ruby,
- Δημιουργία microservices.

Με όλη τη γνώση από προηγούμενες προσπάθειες, αποφάσισαν να δημιουργήσουν το δικό τους εργαλείο: Packwerk.

Packwerk

Τι είναι το Packwerk;

Packwerk είναι ένα εργαλείο στατικής ανάλυσης που χρησιμοποιείται για την επιβολή ορίων μεταξύ ομάδων Ruby αρχεία που ονομάζονται πακέτα.

Τι είναι ένα πακέτο;

A πακέτο είναι ένας φάκελος που περιέχει κώδικα με αυτόματη φόρτωση. Το Shopify's ομάδα ενθαρρύνει τη χρήση των βέλτιστων πρακτικών σχεδιασμού κατά τη δημιουργία πακέτων.
- Θα πρέπει να συσκευάσουμε μαζί πράγματα που έχουν υψηλή λειτουργικότητα συνοχή,

Τύποι ελέγχων ορίων

Μπορούμε να επιβάλλουμε όρια απορρήτου και εξαρτήσεων, να ελέγχουμε παραβιάσεις των ορίων και κυκλικές εξαρτήσεις.

Packwerk στην πράξη

Δεν υπάρχει ένας μόνο συγκεκριμένος τρόπος για να δομήσετε ή να αναδιαρθρώσετε την εφαρμογή σας κατά τη δημιουργία πακέτων. Σε αυτό το άρθρο, θα ακολουθήσουμε την προσέγγιση που προτείνεται από το
Stephan Hagemann στο Σταδιακή διαμόρφωση για το Ruby on Ράγες.

Επιλέξτε το έργο

Μπορείτε να δημιουργήσετε ένα νέο έργο ή επιλέξτε ένα από τα έργα σας. Αποφάσισα να χρησιμοποιήσω ένα έργο ανοικτού κώδικα που ονομάζεται CodeTriage. Είναι σημαντικό να αναφέρουμε ότι χρειαζόμαστε μια εφαρμογή Rails 6 αφού Packwerk χρησιμοποιεί το Zeitwerk.

Αρχικοποίηση του Packwerk

Πρώτα, πρέπει να προσθέσουμε το gem στο Gemfile μας όπως πολύτιμος λίθος 'packwerk' και στη συνέχεια εκτελέστε δέσμηστην κονσόλα. Στη συνέχεια, είμαστε έτοιμοι να αρχικοποιήσουμε την εκτέλεση του πολύτιμου λίθου packwerk init.

Μετά από αυτό, παρατηρούμε ότι Packwerk δημιούργησε τρία αρχεία για us:

packwerk.yml είναι το αρχείο ρυθμίσεων του Packwerk όπου θα ορίσουμε τα συμπεριλαμβανόμενα και εξαιρούμενα αρχεία, θα απαριθμήσουμε τις διαδρομές φόρτωσης, θα ορίσουμε το αρχείο κλίσεων, μεταξύ άλλων,

package.yml είναι το αρχείο ρυθμίσεων ενός πακέτου. Σε αυτό το αρχείο, θα προσθέσουμε τις ρυθμίσεις για τα όρια του πακέτου μας. Οποιοσδήποτε φάκελος με το package.yml θα αναγνωριστεί ως πακέτο από το Packwerk. Αυτό είναι όλο, Packwerk δημιούργησε το πρώτο μας
πακέτο και το ονομάζουμε ρίζα πακέτο.

κλίσεις.yml είναι το σημείο όπου θα τοποθετήσουμε τις προσαρμοσμένες κλίσεις και τα ακρωνύμια μας σε περίπτωση που τα χρησιμοποιούμε.

Μπορείτε να μάθετε περισσότερα για τα αρχεία και τη διαμόρφωσή τους στο
Packwerk.

Ιδιότητες Packwerk

Για να λειτουργήσει η σπονδυλοποίηση χρειαζόμαστε τρεις βασικές ιδιότητες: ένα δοχείο με όνομα, το περιεχόμενο, και ρητή εξαρτήσεις σε άλλα εμπορευματοκιβώτια. Ας ορίσουμε λοιπόν αυτές τις ιδιότητες στο Packwerk:

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

Το τέλος του επεισοδίου Ι

Συμβουλευτική για την ανάπτυξη ψηφιακών προϊόντων

Διαβάστε περισσότερα

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

Σιδηρόδρομοι και άλλα μέσα μεταφοράς

Ανάπτυξη Rails με TMUX, Vim, Fzf + Ripgrep

elGreek