Το Rails είναι ένα πλαίσιο συμβατό με το Rack που επικεντρώνεται στη γρήγορη ανάπτυξη εφαρμογών. Δυστυχώς, η προσέγγιση "όλα έξω από το κουτί" και η τυφλή συμπεριφορά με τον τρόπο Rails συχνά προκαλούν απώλεια ποιότητας του κώδικα της εφαρμογής, τόσο όσον αφορά τη λήψη (αναγνωσιμότητα) όσο και τη λειτουργία του.
Δημοφιλή προβλήματα Rails και Rails-way
- δρομολόγηση,
- before-actions,
- μεγάλες δράσεις σε ελεγκτές,
- ιδιωτικές μέθοδοι σε ελεγκτές,
- mixins που χρησιμοποιούνται μία φορά,
- λογική σε προβολές,
- Ανακλήσεις ActiveRecord,
- Ενώσεις,
- "χοντρά μοντέλα".
Πρόσθετα προβλήματα
- Επικυρώσεις ενεργών εγγραφών,
- σιωπηρή έναντι ρητής,
- κατάχρηση της DRY,
- αντιπροσωπείες σε ενώσεις,
- κλήσεις υπηρεσιών σε μοντέλα.
Εναλλακτικές λύσεις στο Rails
Όταν πρόκειται για Ράγες στο Ruby κόσμο, έχουμε διάφορες εναλλακτικές λύσεις. Άλλα πλαίσια που βασίζονται στο Rack περιλαμβάνουν: - Sinatra, – Roda, – Hanami.
Τι τους κάνει μοναδικούς;
Τόσο η Sinatra όσο και η Roda μας προσφέρουν μια σύνταξη δρομολόγησης μπλοκ, αλλά η δρομολόγηση στη Sinatra είναι μια λίστα και στη Roda - ένα δέντρο. Και στα δύο πλαίσια, πρέπει να ασχοληθούμε μόνοι μας με την υλοποίηση του επιπέδου μοντέλου. Στην περίπτωση του Roda, είναι καλή ιδέα να χρησιμοποιήσουμε το Sequel gem.
Ο Roda εμπνέεται από τον Sinatra. Είναι πολύ ελαφρύ από μόνο του, αλλά διαθέτει πολλά πρόσθετα.
Hanami είναι το πιο κοντινό σε Ράγες όταν πρόκειται για τομείς που καλύπτονται από το πλαίσιο. Οι σημαντικότερες διαφορές όσον αφορά τη χρήση είναι οι εξής:
- ελεγκτές σε Ράγες έναντι των ενεργειών στο Hanami,
- αποκλειστικές κλάσεις/αντικείμενα που χειρίζονται ένα συγκεκριμένο αίτημα HTTP, όχι ένας ελεγκτής για ενέργειες που σχετίζονται με έναν συγκεκριμένο πόρο (μοντέλο),
- στρώμα μοντέλου που βασίζεται σε αποθετήρια και οντότητες, διαχωρίζοντας την εμμονή από την υπόλοιπη εφαρμογή, όχι το πρότυπο ενεργών εγγραφών.
Η έκδοση 1 του Hanami περιορίζει έντονα τη χρήση της ROM στην οποία βασίζεται (έκδοση 3, και είναι ήδη 5), οπότε δεν αξίζει να χρησιμοποιήσετε το στρώμα μοντέλου που προτείνεται εκεί. Ωστόσο, καθώς πρόκειται για ένα πολύ ανοιχτό πλαίσιο, είναι αρκετά εύκολο να υλοποιήσετε εκεί το δικό σας μοντέλο.
Συμπληρώματα για Rails
Αξίζει να χρησιμοποιείτε λύσεις που δεν εξαρτώνται από Ράγες και είναι πιο κοντά στο "καθαρό" Ruby. Τα εργαλεία που αναφέρονται στην παρουσίαση είναι:
- Sequel (ORM, εναλλακτική λύση στην ActiveRecord),
- ROM (χαρτογράφος αντικειμένων),
- βιβλιοθήκες dry-rb: dry-validations, dry-system και dry-monads.
Sequel είναι εύκολο να τεθεί σε ένα έργο, βασίζεται σε plugins και υλοποιεί επίσης το μοτίβο των ενεργών εγγραφών. Έχει καλύτερη υποστήριξη ερωτημάτων χαμηλού επιπέδου από την Ράγες' ActiveRecord.
Η ROM χρησιμοποιεί το Sequel, αλλά η έννοια του είναι να μεταφράζει μεταξύ των εγγραφών στη βάση δεδομένων και των Ruby αντικείμενα. Στόχος του είναι η ταχύτητα και ο μετασχηματισμός δεδομένων. Διαχωρίζει σαφώς το επίπεδο επιμονής στην εφαρμογή.
Οι βιβλιοθήκες Dry-rb είναι πολύ χρήσιμα εργαλεία:
- Το dry-validation είναι πολύ εύκολο στη χρήση σε έργα API και επιτρέπει μεγάλο έλεγχο της ορθότητας των εισερχόμενων δεδομένων,
- Το dry-system χρειάζεται λίγη πρακτικότητα και υπομονή για να το κατανοήσουν οι προγραμματιστές, αλλά επιτρέπει την πολύ ευέλικτη διαχείριση των εξαρτήσεων στην εφαρμογή και τη φόρτωση των στοιχείων του έργου σε απομόνωση- αν θέλουμε να χρησιμοποιήσουμε αυτή τη βιβλιοθήκη σε Ράγες, μπορούμε να χρησιμοποιήσουμε ξηρές ράγες,
- dry-monads είναι μια δύσκολη έννοια στη θεωρία, αλλά στην πράξη είναι πιο εύκολο να κατανοηθεί, το αποτέλεσμα monads μπορεί να είναι ένας πολύ καλός τρόπος για να αυξηθεί η αναγνωσιμότητα του κωδικός εξετάζοντας συγκεκριμένες περιπτώσεις αντί για διακλαδώσεις ifs.
Συμπεράσματα
Είναι καλύτερο να χρησιμοποιείτε Ράγες έτσι ώστε να μην χρειάζεται να χρησιμοποιήσετε το Ράγες μια μέρα.
Πηγές
Άρθρα
Πλαίσια
Πολύτιμοι λίθοι
Προδιαγραφές
Διαβάστε περισσότερα:
Τι είναι το Ruby on Jets και πώς να δημιουργήσετε μια εφαρμογή χρησιμοποιώντας το;
1TP57Ημερολόγιο. Ένα νέο έργο του Codest που βασίζεται στο Vue.js
Η εβδομαδιαία έκθεση του Codest με τα καλύτερα άρθρα τεχνολογίας. Δημιουργία λογισμικού για 50 εκατ. ταυτόχρονες υποδοχές (10)