5 παραδείγματα της καλύτερης χρήσης της Ruby
Αναρωτηθήκατε ποτέ τι μπορούμε να κάνουμε με τη Ruby; Λοιπόν, ο ουρανός είναι μάλλον το όριο, αλλά είμαστε στην ευχάριστη θέση να μιλήσουμε για μερικές περισσότερο ή λιγότερο γνωστές περιπτώσεις...

Πριν από μερικά χρόνια, έκανα ψησταριά με μερικούς φίλους μου, όλοι προγραμματιστές Java. Δεν είμαι σίγουρος πώς προέκυψε, αλλά αρχίσαμε να μιλάμε για τα περιβάλλοντα προγραμματισμού μας. Τους είπα ότι κάνω όλη την ανάπτυξή μου χρησιμοποιώντας Vim και τερματικά. Αυτό προκάλεσε μερικά αστεία και αστείες ερωτήσεις, όπως αν χρησιμοποιώ ακόμα κάρτες διάτρησης 🙂 .
Από τότε, δοκίμασα μερικά "πραγματικά" IDEs αλλά πάντα επέστρεφα στο Vim και τερματικά, καθώς είναι μια πολύ γρήγορη μέθοδος, έχει όλα τα εργαλεία που χρειάζομαι και απλά μου αρέσει να εργάζομαι σε λειτουργία κειμένου.
Ακολουθούν ορισμένες λεπτομέρειες σχετικά με τη ροή εργασίας μου. Αξίζει να αναφέρω ότι εργάζομαι σε Linux, αλλά μπορείτε να το ρυθμίσετε σε Mac ή Windows χωρίς προβλήματα.
Ξεκινάω την ημέρα εργασίας μου ανοίγοντας ένα τερματικό, cd ~/Projects/XYZ, και εκτελώντας tmux, οπότε ας ξεκινήσουμε από εκεί.
Τι είναι TMUX? Όπως λένε οι συγγραφείς:
Το TMUX είναι ένας τερματικός πολυπλέκτης. Σας επιτρέπει να εναλλάσσεστε εύκολα μεταξύ διαφόρων προγραμμάτων σε ένα τερματικό, να τα αποσυνδέετε (συνεχίζουν να εκτελούνται στο παρασκήνιο) και να τα επανασυνδέετε σε ένα διαφορετικό τερματικό.
Το χρησιμοποιώ για να εναλλάσσομαι μεταξύ πολλών πραγμάτων σε ένα τερματικό. Έτσι, σε ένα TMUX παράθυρο, έχω το Ράγες διακομιστή που τρέχει, στο δεύτερο έχω το Vim και κάθε φορά που χρειάζεται να κάνω κάτι στο τερματικό, όπως να ελέγξω διαδρομές, να εκτελέσω μεταναστεύσεις ή δοκιμές, απλά ανοίγω ένα νέο παράθυρο με CTRL-A C
και κάντε το πράγμα.
Δεν χρησιμοποιώ TMUX παράθυρα, μόνο παράθυρα, και κάνω πολλές εναλλαγές (έχω δεσμεύσει το CTRL + double-A για την εναλλαγή μεταξύ των τελευταίων παραθύρων).
Ένα άλλο πολύ βολικό χαρακτηριστικό του TMUX είναι ότι μου επιτρέπει να βρίσκω και να αντιγράφω κείμενο από ένα τερματικό χωρίς να χρησιμοποιώ ποντίκι.
Είναι το κύριο μέρος της ροής εργασίας μου. Δεν θα μπω σε λεπτομέρειες για το τι VIM είναι και πώς διαφέρει από τους άλλους επεξεργαστές. Υπάρχουν πολλά σπουδαία άρθρα και βίντεο σχετικά με αυτό. Με λίγα λόγια, Vim είναι ένας modal editor. Έχει δύο λειτουργίες, τη λειτουργία εισαγωγής και την κανονική λειτουργία. Η εισαγωγή είναι για την πληκτρολόγηση κειμένου σε ένα έγγραφο και η κανονική είναι για την εκτέλεση διαφόρων λειτουργιών στο έγγραφο, όπως η μετακίνηση του δρομέα, η διαγραφή τμημάτων κειμένου, η αλλαγή του και ούτω καθεξής. Ακούγεται παράξενο, αλλά μετά από λίγο καιρό το αισθάνεστε πολύ φυσικό και είναι πολύ δύσκολο να επιστρέψετε στον κανονικό σας επεξεργαστή.
Αυτό που θα ήθελα να σας δείξω είναι ο τρόπος με τον οποίο συνδυάζω Vim με άλλα εργαλεία για να έχω όλα όσα χρειάζομαι ως προγραμματιστής ιστοσελίδων.
Δεν είμαι οπαδός των βαρέων πρόσθετων Vim configs, οπότε χρησιμοποιώ μόνο μερικές. Εδώ είναι η λίστα:
NERDtree - είναι ένας εξερευνητής αρχείων. Σας επιτρέπει να κάνετε εύκολα ορισμένες βασικές λειτουργίες του συστήματος αρχείων, όπως μετακίνηση αρχείων, μετονομασία, δημιουργία νέων αρχείων και πολλά άλλα,
vim-endwise - Είμαι προγραμματιστής Ruby, οπότε το χρησιμοποιώ για να προσθέσω τέλος
μετά το εάν
, do
, def
, και διάφορες άλλες λέξεις-κλειδιά,
vim-rails - είναι ένα Ράγες power plugin. Γνωρίζει τη δομή ενός Εφαρμογή Rails. Θέλετε να ελέγξετε το μερικό κάτω από το δρομέα σας; Απλά πατήστε gf
και το ανοίγει στο τρέχον παράθυρο. Έχει πολλές άλλες επιλογές, αλλά αυτή είναι αυτή που χρησιμοποιώ πιο συχνά,
vim-surround - μεγάλο plugin που κάνει την εργασία με περιβάλλοντα πολύ εύκολη. Με αυτό, μπορείτε να αλλάξετε το περιβάλλον του κειμένου από () σε [] με λίγες πληκτρολογήσεις,
vim-repeat - συμπληρωματικό του Vim-surround. Επιτρέπει την επαναλαμβανόμενη αλλαγή περιβάλλοντος με .
(επαναλάβετε την τελευταία αλλαγή στον Vim),
vimwiki- ο τρόπος μου να κρατάω σημειώσεις,
fzf.vim+ fzf - το βασικό μέρος του ανάπτυξη ιστοσελίδων ροή εργασιών.
Αυτά είναι τα εργαλεία που καθορίζουν τον τρόπο με τον οποίο κάνω τον προγραμματισμό μου. Συνειδητοποίησα ότι συνήθως όταν κάνω κάποιες εργασίες κωδικοποίησης, ξοδεύω τον περισσότερο χρόνο μου για να βρω πώς λειτουργεί το πράγμα. Για να το κάνω αυτό, πρέπει να ελέγχω γρήγορα διάφορα μέρη της βάσης κώδικα, ορισμούς μεθόδων, κλάσεις και άλλα πράγματα.
Fzf είναι ένα διαδραστικό φίλτρο Unix για τη γραμμή εντολών που μπορεί να χρησιμοποιηθεί με οποιεσδήποτε λίστες (αρχεία, ιστορικό εντολών, git commits, λίστες διεργασιών)- με άλλα λόγια, είναι ένα ασαφές πρόγραμμα εύρεσης.
Ripgrep είναι μια εναλλακτική της grep, αλλά είναι η πιο γρήγορη.
Μόλις συνδυαστούν, αυτά τα δύο μου επιτρέπουν να βρίσκω γρήγορα ό,τι θέλω στο έργο.
Έχω δύο ρυθμίσεις στο Vim config αρχείο για να με βοηθήσει με αυτό:
nnoremap :Files
nnoremap :Rg
Η πρώτη μου επέτρεψε να βρω γρήγορα τα σωστά αρχεία χρησιμοποιώντας ασαφή εύρεση στις διαδρομές αρχείων (CTRL-P). Η δεύτερη εκτελεί την ασαφή αναζήτηση σε όλες τις διαδρομές και τα περιεχόμενα των αρχείων στο έργο μου χρησιμοποιώντας Ripgrep (CTRL-F).
Έτσι, ας πούμε ότι θέλω να βρω τη μετανάστευση όπου έχω προσθέσει μια στήλη στο χρήστες
τραπέζι. Πατάω CTRL-F και γράφω κάτι σαν adcolusnam
και θα ταιριάζει με add_column :users, :name, :string
.
Όταν ψάχνω για έναν ορισμό μεθόδου, συχνά τρέχω το CTRL-F def method_name
.
Είναι πολύ χρήσιμο καθώς αναζητά μέσω της διαδρομής αρχείου + περιεχόμενο. Είναι ιδιαίτερα βολικό όταν γνωρίζω ότι το περιεχόμενο που ψάχνω βρίσκεται σε ένα συγκεκριμένο μέρος του έργου. Για παράδειγμα, θέλω να βρω πού ενημερώσαμε ένα όνομα χρήστη και θυμάμαι ότι ήταν κάπου στους ελεγκτές. Πατάω CTRL-F
conupdname
για να ταιριάζει με τη γραμμή app/controllers/users_controller: @user.update(name: new_name)
.
Αν γνωρίζετε τη δομή του έργου και της βάσης κωδικών σας, μπορείτε εύκολα να κατασκευάσετε ασαφή ερωτήματα εύρεσης για να βρείτε γρήγορα σχεδόν οτιδήποτε θέλετε.
Κάντε κλικ εδώ για να δείτε μια σύντομη ηχογράφηση με εμένα να παίζω με την κωδικοποιημένη βάση του `discourse` (440k LOC στον i5 μου, 16GB desktop) και να δείχνω πώς συνήθως κινούμαι γύρω από το έργο.
Ελπίζω να ενδιαφέρεστε για την εγκατάστασή μου και να αποφασίσετε να δώσετε Fzf μια δοκιμή στις προσπάθειές σας για κωδικοποίηση. Πραγματικά άλλαξε τον τρόπο που χρησιμοποιώ Vim ως κωδικός συντάκτης.