5 eksempler på hvordan Ruby kan brukes på best mulig måte
Har du noen gang lurt på hva vi kan gjøre med Ruby? Det er nok ingen grenser, men vi snakker gjerne om noen mer eller mindre kjente tilfeller...
For noen år siden satt jeg og grillet med noen venner, alle Java-utviklere. Jeg vet ikke helt hvordan det kom opp, men vi begynte å snakke om kodemiljøene våre. Jeg fortalte dem at jeg bruker Vim og terminaler til all utviklingen min. Det utløste noen vitser og morsomme spørsmål, som om jeg fortsatt bruker hullkort 🙂 🙂 .
Siden den gang har jeg prøvd noen "ekte" IDE-er, men kom alltid tilbake til Vim og terminaler, siden det er en veldig rask metode, har alle verktøyene jeg trenger, og jeg liker rett og slett å jobbe i tekstmodus.
Her er noen detaljer om arbeidsflyten min. Det er verdt å nevne at jeg jobber på Linux, men du kan uten problemer sette det opp på Mac eller Windows.
Jeg starter arbeidsdagen med å åpne en terminal, cd ~/Projects/XYZ, og kjører tmuxså la oss begynne der.
Hva er TMUX? Som forfatterne sier:
TMUX er en terminalmultiplekser. Den lar deg enkelt veksle mellom flere programmer i én terminal, koble dem fra hverandre (de fortsetter å kjøre i bakgrunnen) og koble dem til en annen terminal.
Jeg bruker den til å veksle mellom flere ting i én terminal. Så i en TMUX vinduet, har jeg Rails serveren kjører, i den andre har jeg min Vim åpnet, og hver gang jeg trenger å gjøre noe i terminalen, som å sjekke ruter, kjøre migreringer eller tester, åpner jeg bare et nytt vindu med CTRL-A C
og gjør greia.
Jeg bruker ikke TMUX ruter, bare vinduer, og bytter mye (jeg har CTRL + dobbelt-A bundet til å bytte mellom de siste vinduene).
En annen veldig praktisk funksjon ved TMUX er at jeg kan finne og kopiere tekst fra en terminal uten å bruke musen.
Det er hoveddelen av arbeidsflyten min. Jeg kommer ikke til å gå i detalj om hva VIM er og hvordan det skiller seg fra andre redigeringsprogrammer. Det finnes mange gode artikler og videoer om det. Med noen få ord, Vim er en modal editor. Den har to moduser, innsettingsmodus og normalmodus. I Insert-modus kan du skrive inn tekst i et dokument, og i normalmodus kan du utføre ulike operasjoner på dokumentet, for eksempel flytte markøren, slette tekstfragmenter, endre tekst osv. Det høres rart ut, men etter en stund føles det veldig naturlig, og det er veldig vanskelig å gå tilbake til den vanlige editoren.
Det jeg vil vise deg, er hvordan jeg kombinerer Vim med andre verktøy for å få alt jeg trenger som webutvikler.
Jeg er ikke tilhenger av tunge plugins Vim konfigurasjoner, så jeg bruker bare noen få. Her er listen:
NERDtree - Det er en filutforsker. Den lar deg enkelt utføre noen grunnleggende filsystemoperasjoner, som å flytte filer, endre navn, opprette nye filer og mye annet,
vim-endwise - Jeg er Ruby-utvikler, så jeg bruker det til å legge til slutt
etter hvis
, gjøre
, def
og flere andre nøkkelord,
vim-skinner - det er en Rails power-plugin. Den kjenner strukturen til en Rails-app. Vil du sjekke den partielle delen under markøren? Bare trykk på gf
og den åpnes i det aktuelle vinduet. Den har mange andre alternativer, men det er det jeg bruker oftest,
vim-surround - flott plugin som gjør det veldig enkelt å jobbe med omgivelser. Med den kan du endre tekstens omgivelser fra () til [] med noen få tastetrykk,
vim-repeat - komplementær til Vim-surround. Det gjør det mulig å endre omgivelsene gjentatte ganger med .
(gjenta siste endring i Vim),
vimwiki- min måte å ta notater på,
fzf.vim+ fzf - den sentrale delen av min webutvikling arbeidsflyt.
Dette er verktøyene som definerer måten jeg koder på. Jeg har innsett at når jeg jobber med koding, bruker jeg vanligvis mesteparten av tiden min på å finne ut hvordan ting fungerer. For å gjøre dette må jeg raskt sjekke ulike deler av kodebasen, metodedefinisjoner, klasser og andre ting.
Fzf er et interaktivt Unix-filter for kommandolinjen som kan brukes med alle typer lister (filer, kommandohistorikk, git-kommandoer, prosesslister); det er med andre ord en fuzzy finder.
Ripgrep er et alternativ til grep, men det er den lynraske.
Når disse to kombineres, kan jeg raskt finne alt jeg vil ha i min prosjekt.
Jeg har to innstillinger i min Vim config-filen for å hjelpe meg med dette:
nnoremap :Files
nnoremap :Rg
Den første lar meg raskt finne riktige filer ved hjelp av fuzzy finding på filstier (CTRL-P). Den andre kjører fuzzy finder på alle stier og innholdet i filene i prosjektet mitt ved hjelp av Ripgrep (CTRL-F).
La oss si at jeg ønsker å finne migrasjon der jeg la til en kolonne i brukere
bord. Jeg trykker CTRL-F og skriver noe sånt som adcolusnam
og det vil matche add_column :users, :name, :string
.
Når jeg leter etter en metodedefinisjon, kjører jeg ofte CTRL-F def metode_navn
.
Det er veldig nyttig, ettersom det søker gjennom filbane + innhold. Det er spesielt praktisk når jeg vet at innholdet jeg leter etter, befinner seg i en bestemt del av prosjektet. Jeg vil for eksempel finne hvor vi oppdaterte et brukernavn, og jeg husker at det var et sted i kontrollerne. Jeg trykker på CTRL-F
conupdname
for å matche linje app/controllers/users_controller: @user.update(navn: nytt_navn)
.
Hvis du kjenner prosjekt- og kodebasestrukturen din, kan du enkelt konstruere uklare søk for å finne nesten hva du vil.
Klikk her for å se et kort opptak av meg mens jeg leker med `discourse`-kodebasen (440k LOC på min i5, 16GB desktop) og viser hvordan jeg vanligvis beveger meg rundt i prosjektet.
Jeg håper du ble interessert i oppsettet mitt og bestemte deg for å gi Fzf et forsøk i dine kodingsbestrebelser. Det har virkelig endret måten jeg bruker Vim som en kode redaktør.