5 exempel på hur Ruby används på bästa sätt
Har du någonsin undrat vad vi kan göra med Ruby? Tja, himlen är förmodligen gränsen, men vi är glada att prata om några mer eller mindre kända fall ...
För några år sedan grillade jag med några av mina vänner, alla Java-utvecklare. Vet inte riktigt hur det kom upp, men vi började prata om våra kodningsmiljöer. Jag berättade att jag gör all min utveckling med hjälp av Vim och terminaler. Det utlöste några skämt och roliga frågor, som om jag fortfarande använder hålkort 🙂 🙂
Sedan dess har jag provat några "riktiga" IDE:er men alltid kommit tillbaka till Vim och terminaler eftersom det är en mycket snabb metod, har alla de verktyg jag behöver och jag helt enkelt gillar att arbeta i textläget.
Här är några detaljer om mitt arbetsflöde. Det är värt att nämna att jag arbetar på Linux, men du kan ställa in det på Mac eller Windows utan problem.
Jag börjar min arbetsdag med att öppna en terminal, cd ~/Projects/XYZ och köra tmuxså låt oss börja där.
Vad är TMUX? Som författarna säger:
TMUX är en terminalmultiplexerare. Med den kan du enkelt växla mellan flera program i en terminal, koppla bort dem (de fortsätter att köras i bakgrunden) och koppla in dem igen i en annan terminal.
Jag använder den för att växla mellan flera saker i en terminal. Så, i en TMUX fönster, har jag Räls server igång, i den andra har jag min Vim öppnas, och varje gång jag behöver göra något i terminalen, som att kontrollera rutter, köra migreringar eller tester, öppnar jag bara ett nytt fönster med CTRL-A C
och gör grejen.
Jag använder inte TMUX rutor, bara fönster, och gör en hel del växlingar (jag har CTRL + dubbel-A bindning för att växla mellan de senaste fönstren).
En annan mycket praktisk funktion hos TMUX är att jag kan hitta och kopiera text från en terminal utan att använda musen.
Det är den viktigaste delen av mitt arbetsflöde. Jag kommer inte att gå in på detaljer om vad VIM och hur det skiljer sig från andra editorer. Det finns många bra artiklar och videor om det. Med några få ord, Vim är en modal editor. Den har två lägen, infoga-läge och normalt läge. Insert är till för att skriva in text i ett dokument och normal är till för att utföra olika operationer på dokumentet, som att flytta markören, ta bort textfragment, ändra i det och så vidare. Det låter konstigt men efter en tid känns det väldigt naturligt och det är väldigt svårt att gå tillbaka till sin vanliga editor.
Det jag vill visa dig är hur jag kombinerar Vim med andra verktyg för att få allt jag behöver som webbutvecklare.
Jag är inte ett fan av tunga plugin Vim konfigurationer, så jag använder bara några få. Här är listan:
NERDtree - det är en filutforskare. Det gör att du enkelt kan göra några grundläggande filsystemoperationer, som att flytta filer, byta namn, skapa nya filer och många andra,
vim-endwise - Jag är en Ruby-utvecklare, så jag använder den för att lägga till slut
efter om
, göra
, def
och flera andra nyckelord,
vim-rails - Det är en Räls power plugin. Den känner till strukturen hos en Rails-applikation. Vill du kontrollera partialen under din markör? Tryck bara på gf
och det öppnar det i ditt nuvarande fönster. Det har många andra alternativ men det är det jag använder oftast,
vim-surround - bra plugin som gör det mycket enkelt att arbeta med omgivningar. Med det kan du ändra textens omgivning från () till [] med några få tangenttryckningar,
vim-upprepa - komplement till Vim-surround. Det möjliggör en upprepad förändring av omgivningen med .
(upprepa den sista ändringen i Vim),
vimwiki- mitt sätt att göra anteckningar,
fzf.vim+ fzf - den centrala delen av min webbutveckling arbetsflöde.
Det här är de verktyg som definierar hur jag kodar. Jag insåg att när jag utför kodningsuppgifter brukar jag ägna större delen av min tid åt att ta reda på hur saker och ting fungerar. För att göra detta måste jag snabbt kontrollera olika delar av kodbasen, metoddefinitioner, klasser och annat.
Fzf är ett interaktivt Unix-filter för kommandoraden som kan användas med alla listor (filer, kommandohistorik, git-kommiteringar, processlistor); med andra ord är det en fuzzy finder.
Ripgrep är ett alternativ till grep, men det är det blixtsnabba alternativet.
När dessa två kombineras kan jag snabbt hitta allt jag vill ha i min projekt.
Jag har två inställningar i min Vim config-fil för att hjälpa mig med detta:
nnoremap :Filer
nnoremap :Rg
Den första låter mig snabbt hitta rätt filer med hjälp av fuzzy finding på filsökvägar (CTRL-P). Den andra kör fuzzy finder på alla sökvägar och innehåll i filer i mitt projekt med hjälp av Ripgrep (CTRL-F).
Låt oss säga att jag vill hitta migration där jag lade till en kolumn i användare
bord. Jag trycker på CTRL-F och skriver något i stil med adcolusnam
och det kommer att matcha add_column :användare, :namn, :sträng
.
När jag letar efter en metoddefinition kör jag ofta CTRL-F def metod_namn
.
Det är mycket användbart eftersom det söker igenom filsökväg + innehåll. Det är särskilt praktiskt när jag vet att det innehåll jag letar efter finns i en viss del av projektet. Jag vill till exempel hitta var vi uppdaterade ett användarnamn, och jag minns att det var någonstans i kontrollerna. Jag trycker på CTRL-F
konupnamn
för att matcha linje app/controllers/users_controller: @user.update(namn: nytt_namn)
.
Om du känner till strukturen i ditt projekt och din kodbas kan du enkelt konstruera fuzzy find-frågor för att snabbt hitta nästan vad du vill.
Klicka här för att se en kort inspelning av mig när jag leker med kodbasen `discourse` (440k LOC på min i5, 16GB desktop) och visar hur jag brukar flytta runt projektet.
Jag hoppas att du blev intresserad av min installation och bestämde dig för att ge Fzf ett försök i dina kodningssträvanden. Det förändrade verkligen sättet jag använder Vim som en kod redaktör.