Μερικές φορές ακούω ανθρώπους να παραπονιούνται για τους πελάτες τους, λέγοντας ότι αυτοί επιμένω στη χρήση των Rails, ότι είχαν πάρα πολύ Kool Aid. Αν είναι στρατολογητές, αισθάνονται σχεδόν άρρωστοι στο στομάχι ότι πρέπει να βρουν ακόμη έναν προγραμματιστή «primadona» του Ruby on Rails. Τότε βγάζουν κάτι παρόμοιο με αυτό το εκπληκτικά ανίδεο σύγκριση μεταξύ Git και PHP για να αποδείξει την άποψή τους. «Δεν γνωρίζουν καν τι ζητούν», λένε.
Για εμάς ως προγραμματιστές , μερικές φορές φαίνεται ότι οι πελάτες μας δεν έχουν ιδέα. Μας αρέσει να υπερβάλλουμε περιπτώσεις όπως αυτή. Όταν το σκέφτεστε λίγο, δεν φαίνεται σωστό να σκεφτείτε ότι ένα άτομο που μου δίνει χρήματα για να φτιάξω πράγματα είναι κάπως περιορισμένο και «απλά δεν το καταλαβαίνω». Στην πραγματικότητα, Πιστεύω ότι οι περισσότεροι πελάτες γνωρίζουν τις επιλογές τους μια χαρά και όμως ακόμη αποφασίσετε να πάτε με το Rails.
Θα προσπαθήσω να εξηγήσω τι, κατά τη γνώμη μου, κάνει το Rails αρκετά ωφέλιμο για να ληφθεί σοβαρά υπόψη για μια πληθώρα έργων και αναγκών.
φροντιστήριο ανοιξιάτικων παρτίδων για αρχάριους
Είναι πιθανό κανείς να μην ξέρει καν τα οφέλη του Ruby αν δεν ήταν το ίδιο το Rails. Μερικοί άνθρωποι αρέσει να υποτιμούν τον Ruby λέγοντας ότι είναι «τόσο εύκολο για τον Ruby» με το «ιππότης στη λαμπερή θωράκιση που ονομάζεται Rails» και ότι χωρίς Rails, το «Ruby θα ήταν άσχετο». Δεν μπορώ να πω με βεβαιότητα αν αυτό είναι αλήθεια ή όχι, αλλά ξέρω ότι θα ήταν τεράστια ντροπή αν ο κόσμος χάσει μια τόσο υπέροχη γλώσσα. Το γεγονός είναι: ο συγγραφέας του Rails επέλεξε σκόπιμα τον Ruby και το «άγριο» στοίχημά του απέδωσε με τεράστιο ενδιαφέρον. Αυτό που είδε τότε, πολλοί άλλοι μπορούν να δουν σήμερα. Ο Ruby επιτρέπει κατά κάποιο τρόπο στους προγραμματιστές με έναν ειδικό τρόπο που είναι τόσο δύσκολο να εξηγηθεί στις «άπλυτες μάζες». Γιατί λοιπόν να χρησιμοποιήσετε το Ruby on Rails; Η Ruby κάνει τους προγραμματιστές χαρούμενους, όπως διαφημίζεται.
Ενώ οι περισσότεροι προγραμματιστές συμφωνούν ότι το Ruby είναι βολικό, ορισμένοι το βλέπουν ως πάρα πολύ Έτσι. Ανησυχούν για το τι θα μπορούσε να συμβεί με όλες τις ελευθερίες που επιτρέπει η Ruby, όλες τις πιθανότητες κατάχρησης. Επιτρέψτε μου να απεικονίσω με κάποια επιδιόρθωση μαϊμού:
'1'.to_i #=> 1 class String def to_i raise 'foobar' end end '1'.to_i #=> RuntimeError: foobar
Είναι τόσο εύκολο: με μόλις πέντε γραμμές κώδικα, έχουμε λάβει μια υπάρχουσα τάξη και αντικαταστήσαμε τη συμπεριφορά της. Το Nohting είναι ιερό - ούτε καν μια χορδή. Αυτό το συγκεκριμένο σφάλμα θα ήταν εύκολο να εντοπιστεί, αλλά τα πράγματα μπορούν να γίνουν πολύ πιο απαίσια:
class String def to_i self.to_f - 1.13 end end '2'.to_i #=> 0.8700000000000001
Ακριβώς έτσι, έχουμε εισαγάγει ένα σφάλμα στην κλάση String που θα μπορούσε να τυλιχτεί και να συγκαλυφθεί από στρώμα σε επίπεδο πολυπλοκότητας.
Έτσι, ίσως σκέφτεστε: Μπορούν όλοι και η μητέρα τους να χάσουν την πολύτιμη εφαρμογή μου; Αν και αυτή η συμπεριφορά φαίνεται πραγματικά τρομακτική - δεν είναι πραγματικά. Σε πέντε χρόνια χρησιμοποιώντας τον Ruby , Είχα ακριβώς μηδενικά προβλήματα με αυτήν τη συμπεριφορά. Μπορεί να φαίνεται αντίθετο, αλλά και πάλι, το ίδιο ισχύει και για την οδήγηση αυτοκινήτων στα 60 MPH σε αντίθετες κατευθύνσεις, χωρισμένες μόνο από μια λεπτή λευκή γραμμή στο μέσο του δρόμου. Στην πράξη, και οι δύο λειτουργούν εξαιρετικά καλά.
πολλών δισεκατομμυρίων δολαρίωνΜπορεί να φαίνεται αντίθετο, αλλά και πάλι, το ίδιο ισχύει και για την οδήγηση αυτοκινήτων στα 60 MPH σε αντίθετες κατευθύνσεις, χωρισμένες μόνο από μια λεπτή λευκή γραμμή στο μέσο του δρόμου. Στην πράξη, και οι δύο λειτουργούν εξαιρετικά καλά.
Ένα άλλο πλεονέκτημα είναι ότι το Ruby είναι ένα ευέλικτο εργαλείο. Ως εκ τούτου, έχει αιχμηρές άκρες που μοιάζουν με μαχαίρι. Μου αρέσει να σκέφτομαι ότι οι ενήλικες μπορούν να χειριστούν μαχαίρια μόνο - η προστασία από τα παιδιά είναι για τα παιδιά ( Τιτίβισμα ). Και η συμπεριφορά σαν παιδί στην πληροφορική σας αφήνει θύμα του Paul Graham's Παράδοξο Blub : νομίζετε ότι είστε καλύτερα χωρίς ορισμένες δυνατότητες που δεν καταλαβαίνετε ή ότι κάποιος σας είπε ότι είναι πολύ επικίνδυνο. Φυσικά, σήμερα ρωτάμε 'γιατί να χρησιμοποιήσετε το Ruby on Rails'? Επομένως, αυτή είναι μια συζήτηση για άλλη μια φορά. Βεβαίως, ο Ruby χάνει κάποια χαρακτηριστικά που έχουν άλλες γλώσσες (Lisp hmm, hmm). Συνολικά, η Ruby βρίσκεται κοντά στην κορυφή του «γλωσσικού συνεχούς ισχύος».
Τα πρώτα μου χρόνια με την Ruby ταπεινώθηκαν. Έμαθα πολλά από το να διαβάζω τον κώδικα άλλων. Μερικές φορές, έμεινα έκπληκτος. μερικές φορές, ήμουν τρελός? αλλά τελικά, αυτή η γνώση μου επέτρεψε να επικοινωνήσω με τον υπολογιστή μου πολύ πιο αποτελεσματικά από πριν. Νιώθω σχεδόν λυπάμαι για κάποιες άλλες γλώσσες «γραφειοκρατίας» που σε κάνουν να πηδάς μέσα από στεφάνες μόνο για να τους πηδήξεις, ενώ σου λέω «Απλώς κάνω ό, τι καλύτερο για σένα, είναι για το καλό σου!
Υπάρχει βαθύς σεβασμός για τον πραγματισμό που είναι πλεκτό στο DNA του Rails στο χαμηλότερο δυνατό επίπεδο. Σε συνδυασμό με τα οφέλη του Ruby, αυτός ο πραγματισμός παράγει κομψές λύσεις και ενθαρρύνει / εμπνέει το Ruby on Rails αναπτυξιακή κοινότητα να κάνει το ίδιο. Ο ρεαλισμός διαφημίζεται συχνά ως σκηνή του Rails, οπότε αυτός ο ισχυρισμός δεν είναι καινούργιος, αλλά μου θύμισε την αλήθεια αρκετά πρόσφατα, καθώς ένας φίλος μου προσπάθησε να μου δείξει πόσο «κουλ» Παραχειμάζω αλήθεια είναι. Παλεύει. Θα μπορούσα να νιώσω τον πόνο του, καθώς δεν μπόρεσε να ορίσει πολλές επιλογές και παραμέτρους διαμόρφωσης που θα έπρεπε να είναι αρχικά οι προεπιλογές του πλαισίου.
Με την ηλικία, τα πρότυπα μου για την τεχνητή πολυπλοκότητα έχουν αυξηθεί όλο και περισσότερο. Λαμβάνοντας υπόψη ότι άρχισα να γράφω τον κωδικό παραγωγής το 1989 στην ηλικία των 11 ετών (ξεκινώντας με ένα έργο για τον γείτονα δίπλα μου στο Clipper Summer ‘87 Έχω σχεδόν μηδενική ανοχή για περιττές επιπλοκές. Και οι βαθμολογίες Rails είναι πολύ υψηλές σε αυτό το τμήμα. Είναι κάτι παραπάνω από απλώς «σύμβαση σχετικά με τη διαμόρφωση». Μιλώ για ολόκληρη τη ρεαλιστική νοοτροπία που εκτιμάται πολύ μέσα και διαπερνά την κοινότητα Rails.
Οι ράγες είναι όσο πιο κοντά στα Αγγλικά (εκτός αν χρησιμοποιείτε COBOL). Χρησιμοποιεί αυτό που είναι γνωστό ως εσωτερικό DSL , επεκτείνοντας τον Ruby με τη δική του σημασιολογία. Η κατασκευή ενός DSL είναι πάντα επικίνδυνη καθώς αναπτύσσετε αποτελεσματικά μια νέα γλώσσα. Επειδή είναι εσωτερικό, δεν χρειάζεται να χρησιμοποιήσετε εξωτερικό αναλυτή, αλλά με μια έννοια αισθάνεται σαν μια νέα γλώσσα. Η ομάδα του Rails πέτυχε μια καλή ισορροπία με το DSL της, χρησιμοποιώντας το όπου έχει νόημα και σπάνια το παρακάνετε, επιδεικνύοντας εξαιρετικό αυτοέλεγχο. Νομίζω ότι οποιοσδήποτε προγραμματιστής, ανεξάρτητα από την εμπειρία του Rails, (και ακόμη και ορισμένοι μη προγραμματιστές) θα μπορούσε να το καταλάβει αυτό:
class User true acts_as_taggable acts_as_taggable_on :certificates, :expertise_kinds validates_presence_of :first_name, :last_name, :email has_many :translations has_attached_file :avatar, :styles => {:small => '240x240>'} has_attached_file :cv ...
Στην πραγματικότητα, εάν δεν είστε εξοικειωμένοι με τον Ruby, αυτό μπορεί να φαίνεται περίεργο - είναι σχεδόν σαν να μην είναι γλώσσα προγραμματισμού. Μόλις συνειδητοποιήσετε ότι είναι απλώς κλήσεις μεθόδου χωρίς παρενθέσεις, μπορείτε να πάτε. Ωστόσο, το Rails DSL πιστεύει ότι είναι αυτή η ειδική γλώσσα για την περιγραφή απαιτήσεων, ενώ στην πραγματικότητα είναι απλά έξυπνη ονομασία και εγγενής χρήση της εξαιρετικής σύνταξης του Ruby.
Το Rails διαθέτει ένα στρατό από committers που βεβαιώνουν ότι παραμένει σε άριστη κατάσταση. Πολλά έργα σιγοβράζουν με την ηλικία, αλλά με τις ράγες, οι σπινθήρες εξακολουθούν να πετούν όταν πρέπει να ληφθούν αποφάσεις. Φαίνεται ότι οι συντηρητές (ακόμα) νοιάζονται πραγματικά και θέλουν οι άνθρωποι να χρησιμοποιούν το Ruby on Rails και να κατανοούν τα οφέλη του.
Πολλά έργα σιγοβράζουν με την ηλικία, αλλά με τις ράγες, οι σπινθήρες εξακολουθούν να πετούν όταν πρέπει να ληφθούν αποφάσεις. ΤιτίβισμαΤο Underneath Rails, ως κεράσι στην κορυφή, στέκεται τον Ruby με τον τρομερό διαχειριστή πακέτων, RubyGems , συγκρίσιμο με CPAN όσον αφορά τον αριθμό των πακέτων –και λαμβάνοντας υπόψη την ηλικία του CPAN, αυτός ο ισχυρισμός είναι (εν ολίγοις) πολύ εντυπωσιακός. Το Rails είχε ένα σύντομο εκτροχιασμό όταν προσπάθησε να φτιάξει τα δικά του 'Rails plugins'. Ευτυχώς, αυτό δεν κολλήθηκε, οπότε το RubyGems παραμένει η ενοποιημένη, εξαιρετική πηγή κώδικα που έχει προγραμματιστεί από πολύ φωτεινά άτομα.
πόσο μεγάλη είναι η μουσική βιομηχανία
Η συνέργεια ανάμεσα σε μια δροσερή γλώσσα, ένα πραγματικό πλαίσιο ιστού και μια υπέροχη κοινότητα δίνει στο Rails ένα αποτέλεσμα πολύ καλύτερα από το άθροισμα των μερών του.
Οι ράγες ήταν γύρω από το τετράγωνο. Με έναν τρόπο hipster, δεν είναι πλέον τόσο δροσερό. Αυτό είναι καλό για την επιλογή μιας στοίβας τεχνολογίας: θέλετε κάτι αποδεδειγμένο. Και το Rails είναι ακριβώς αυτό. Πρόσφατα γράψαμε ένα κομμάτι που μιλούσε για τη μεγάλη ποικιλία Ρουμπίνι διερμηνείς και ώρες εκτέλεσης που είναι τώρα διαθέσιμα.
Ξέρω ξέρω. Ως επαγγελματίας πληροφορικής, θα έπρεπε πραγματικά να εκτιμώ 'σοβαρός' πράγματα και αγνοήστε το 'λάμψη' . Μπορεί να φαίνεται ρηχό, αλλά ας το αντιμετωπίσουμε:
Δεν πρόκειται καν για ματαιοδοξία. πρόκειται για τη συμμετοχή όσο το δυνατόν περισσότερων έξυπνων ανθρώπων για να βάλουμε νερό στο μύλο. Όταν λαμβάνονται υπόψη τα πλαίσια, το καλύτερο μέρος για να είστε είναι στο πλήθος. Η επιλογή ενός πλαισίου στο οποίο εστιάζουν αυτοί οι έξυπνοι άνθρωποι σημαίνει ότι έχει ήδη καλυφθεί πολύ περισσότερο έδαφος. Και αυτό με φέρνει στο επόμενο σημείο μου.
Έχω ένα μαλακό σημείο για μικροσκοπικά πλαίσια. Μου αρέσει όταν μπορώ να καταλάβω τι κάνει ένα συγκεκριμένο πλαίσιο και γιατί. Υπό αυτήν την έννοια, οι ράγες είναι κάπως φουσκωμένες, και μερικές φορές συντριπτικές.
απόδοση από την πλευρά του πελάτη έναντι απόδοσης από την πλευρά του διακομιστή
Το δίλημμα εδώ: πόσες φορές θέλετε να γράφετε τα ίδια πράγματα ξανά και ξανά; Μερικά από αυτά μπορούν να ξαναγραφούν καλύτερα, είμαι σίγουρος, αλλά χρειάζεται χρόνος - πολύς χρόνος. Όσο περισσότερο επιτρέπετε στο Rails να κάνει για εσάς, τόσο λιγότερο πρέπει να ανησυχείτε για την επανεγγραφή ή την εκ νέου εφαρμογή της λειτουργικότητάς σας.
Οι ράγες είναι (όπως λένε) «περιλαμβάνονται μπαταρίες». Αυτό δεν είναι καλό, αν ενδιαφέρεστε για τη λιτότητα ή εάν αισθάνεστε την ανάγκη να έχετε εκτενή γνώση του πώς λειτουργούν τα πάντα. Στην πράξη, εάν αφήσετε τους φόβους σας, φαίνεται να λειτουργεί. Οι ράγες έχουν εύλογες προεπιλογές για σχεδόν όλα όσα χρειάζεστε και είναι αρκετά αρθρωτό για να αποφύγετε να στρίψετε σε σφιχτό σημείο.
Αναρωτηθείτε ξανά, γιατί να το χρησιμοποιήσετε Ruby on Rails ; Το Rails είναι κατάλληλο τόσο για δημόσιους ιστότοπους τελευταίας τεχνολογίας που ανταγωνίζονται με εφαρμογές μιας σελίδας JavaScript, όσο και για σύνθετες εφαρμογές εταιρικού πυρήνα που συνήθως φαίνονται λίγο «άσχημο» (με ένα πιο γενικό περιβάλλον εργασίας χαμηλότερης πιστότητας), αλλά το αντισταθμίζει αυτό κηλίδες με έναν πολύπλοκο επιχειρηματικό κανόνα και λογική. Το πλεονέκτημά του είναι ότι είναι ευέλικτο και ικανό να ανταγωνιστεί τόσο το κομψό όσο και το ισχυρό.
Για τα περισσότερα από τα κοινά προβλήματα, η Rails διαθέτει ένα συστατικό στοιχείο σχεδόν στη διάθεσή σας με τεκμηρίωση που είναι σταθερά πάνω από τον μέσο όρο (κάπως, η βασική ομάδα του Rails έπεισε τους συνεργάτες ότι η συγγραφή τεκμηρίωσης είναι δροσερή (παρόλο που όλοι γνωρίζουμε ότι είναι όχι), οδηγώντας σε καλά γραπτά, συνοπτικά και εξοικονομώντας χρόνο έγγραφα).
Όταν αφήνετε τους μονόκερους και τις αγκαλιές της Παρασκευής, καταλήγετε σε ένα ισχυρό πλαίσιο που μπορείτε να χρησιμοποιήσετε τόσο για τον μελλοντικό σας παίκτη αλλαγής παιχνιδιών όσο και για τον επόμενο επιχειρηματικό σας ιστότοπο. Και με το σύνολο των πολύτιμων λίθων, έχετε στη διάθεσή σας ένα οπλοστάσιο που εφαρμόζει μερικές από τις πιο λαμπρές ιδέες στον προγραμματισμό υπολογιστών. Χωρίς φασαρία.
Σχετίζεται με: Timestamp Truncation: A Ruby on Rails ActiveRecord Tale