5 esempi di utilizzo ottimale di Ruby
Vi siete mai chiesti cosa possiamo fare con Ruby? Beh, il cielo è probabilmente il limite, ma siamo felici di parlare di alcuni casi più o meno noti...
Qualche anno fa, stavo facendo una grigliata con alcuni amici, tutti sviluppatori Java. Non so come sia venuto fuori, ma abbiamo iniziato a parlare dei nostri ambienti di codifica. Ho detto loro che faccio tutto il mio sviluppo usando Vim e Terminals. Questo ha scatenato alcune battute e domande divertenti, come se stessi ancora usando le schede perforate 🙂
Da allora, ho provato alcuni IDE "veri", ma sono sempre tornato a Vim e terminali perché è un metodo molto veloce, ha tutti gli strumenti di cui ho bisogno e semplicemente mi piace lavorare in modalità testo.
Ecco alcuni dettagli sul mio flusso di lavoro. Vale la pena di ricordare che lavoro su Linux, ma è possibile configurarlo senza problemi su Mac o Windows.
Inizio la mia giornata lavorativa con l'apertura di un terminale, cd ~/Projects/XYZ e l'esecuzione di tmux, quindi iniziamo da lì.
Che cosa è TMUX? Come dicono gli autori:
TMUX è un multiplexer di terminale. Permette di passare facilmente da un programma all'altro in un terminale, di staccarli (continuano a girare in background) e di riattaccarli a un altro terminale.
Lo uso per passare da un terminale all'altro. Quindi, in un TMUX ho la finestra Rotaie server in esecuzione, nel secondo ho il mio Vim e ogni volta che ho bisogno di fare qualcosa nel terminale, come controllare le rotte, eseguire migrazioni o test, apro semplicemente una nuova finestra con CTRL-A C
e fare la cosa.
Non uso TMUX riquadri, solo finestre, e fare un sacco di passaggi (ho CTRL + doppia A per passare tra le ultime finestre).
Un'altra caratteristica molto comoda di TMUX è che mi permette di trovare e copiare testo da un terminale senza usare il mouse.
È la parte principale del mio flusso di lavoro. Non entrerò nei dettagli di ciò che VIM e come si differenzia dagli altri editor. Ci sono molti articoli e video interessanti al riguardo. In poche parole, Vim è un editor modale. Dispone di due modalità, quella di inserimento e quella normale. La modalità inserisci serve per digitare il testo in un documento, mentre la modalità normale serve per eseguire diverse operazioni sul documento, come spostare il cursore, cancellare frammenti di testo, modificarlo e così via. Sembra strano, ma dopo un po' di tempo risulta molto naturale ed è molto difficile tornare al normale editor.
Vorrei mostrarvi il modo in cui combino Vim con altri strumenti per ottenere tutto ciò di cui ho bisogno come sviluppatore web.
Non sono un fan dei plugin pesanti Vim configurazioni, quindi ne sto usando solo alcune. Ecco l'elenco:
NERDtree - è un esploratore di file. Permette di eseguire facilmente alcune operazioni di base del file system, come spostare i file, rinominarli, crearne di nuovi e molte altre,
vim-endwise - Io sono uno sviluppatore Ruby, quindi lo uso per aggiungere fine
dopo se
, fare
, dif
e diverse altre parole chiave,
vim-rail - è un Rotaie plugin di potenza. Conosce la struttura di un file Applicazione Rails. Volete controllare il parziale sotto il vostro cursore? Basta premere gf
e si apre nella finestra corrente. Ci sono molte altre opzioni, ma questa è quella che uso più spesso,
vim-surround - ottimo plugin che rende molto semplice lavorare con l'ambiente circostante. Con esso, è possibile cambiare l'ambiente circostante del testo da () a [] in poche battute,
vim-ripetizione - complementare a Vim-surround. Permette di cambiare ripetutamente l'ambiente circostante con .
(ripetere l'ultima modifica in Vim),
vimwiki- il mio modo di prendere appunti,
fzf.vim+ fzf - la parte centrale del mio sviluppo web flusso di lavoro.
Questi sono gli strumenti che definiscono il mio modo di fare codifica. Mi sono reso conto che di solito, quando svolgo attività di codifica, passo la maggior parte del tempo a scoprire come funzionano le cose. Per farlo, devo controllare rapidamente diverse parti del codice, definizioni di metodi, classi e altro.
Fzf è un filtro Unix interattivo per la riga di comando che può essere usato con qualsiasi elenco (file, cronologia dei comandi, commit di git, elenchi di processi); in altre parole, è un cercatore di informazioni.
Ripgrep è un'alternativa a grep, ma è molto veloce.
Una volta combinati, questi due elementi mi permettono di trovare rapidamente tutto ciò che desidero nella mia progetto.
Ho due impostazioni in Vim file di configurazione per aiutarmi a risolvere questo problema:
nnoremap :File
nnoremap :Rg
Il primo mi ha permesso di trovare rapidamente i file corretti usando il fuzzy finder sui percorsi dei file (CTRL-P). Il secondo esegue il fuzzy finder su tutti i percorsi e i contenuti dei file del mio progetto usando Ripgrep (CTRL-F).
Quindi, supponiamo di voler trovare la migrazione dove ho aggiunto una colonna al file utenti
tavolo. Premendo CTRL-F, scrivo qualcosa come adcolusnam
e corrisponderà a add_column :users, :name, :string
.
Quando cerco la definizione di un metodo, spesso eseguo CTRL-F def nome_metodo
.
È molto utile perché cerca attraverso il percorso del file + il contenuto. È particolarmente comodo quando so che il contenuto che sto cercando si trova in una parte specifica del progetto. Per esempio, voglio trovare dove abbiamo aggiornato un nome utente e ricordo che era da qualche parte nei controllori. Ho premuto CTRL-F
nome del gruppo
per abbinare la linea app/controller/users_controller: @utente.update(nome: nuovo_nome)
.
Se si conosce la struttura del progetto e della base di codice, si possono facilmente costruire query di ricerca fuzzy per trovare rapidamente quasi tutto ciò che si desidera.
Clicca qui per vedere una breve registrazione di me che gioco con la base di codice `discourse` (440k LOC sul mio i5, 16GB desktop) e che mostra come di solito mi muovo nel progetto.
Spero che vi siate interessati alla mia configurazione e che abbiate deciso di dare Fzf provare nei vostri tentativi di codifica. Ha davvero cambiato il mio modo di usare Vim come un codice redattore.