Rake (mjukvara)
Utvecklare | Jim Weirich |
---|---|
Stabil frisättning | 13.0.3 / 21 december 2020
|
Förvar | |
Skrivet i | Rubin |
Operativ system | Cross-plattform |
Typ | Verktyg för mjukvaruutveckling |
Licens | MIT-licens |
Hemsida |
Rake är ett verktyg för mjukvaruuppgiftshantering och byggautomatisering skapat av Jim Weirich . Det tillåter användaren att specificera uppgifter och beskriva beroenden samt att gruppera uppgifter i ett namnområde. Det liknar SCons och Make . Det är skrivet i programmeringsspråket Ruby och Rakefilerna (motsvarande Makefiles i Make) använder Ruby-syntax. Rake använder Rubys anonyma funktionsblock för att definiera olika uppgifter, vilket tillåter användning av Ruby-syntax. Den har ett bibliotek med vanliga uppgifter: till exempel funktioner för att utföra vanliga filmanipuleringsuppgifter och ett bibliotek för att ta bort kompilerade filer (den "rena" uppgiften). Precis som Make kan Rake också syntetisera uppgifter baserat på mönster: till exempel bygga automatiskt en filkompileringsuppgift baserat på filnamnsmönster. Rake är nu en del av standardbiblioteket för Ruby från version 1.9 och framåt.
Exempel
Nedan är ett exempel på ett enkelt Rake-skript för att bygga ett C Hello World-program.
file 'hello.o' = > 'hello.c' do sh 'cc -c -o hello.o hello.c' slutfil 'hello' => 'hello.o' gör sh 'cc -o hello.o ' slut
Regler
När en fil namnges som en förutsättning men den inte har en filuppgift definierad för den, kommer Rake att försöka syntetisera en uppgift genom att titta på en lista med regler som tillhandahålls i Rakefilen. Anta till exempel att vi försökte anropa uppgiften "mycode.o" utan några uppgifter definierade för den. Om Rakefilen har en regel som ser ut så här:
regel '.o' => '.c' gör | t | sh "cc #{ t . source } -c -o # { t . name } " end
Denna regel kommer att syntetisera alla uppgifter som slutar på ".o". Det har som en förutsättning att en källfil med tillägget ".c" måste finnas. Om Rake kan hitta en fil med namnet "mycode.c", kommer den automatiskt att skapa en uppgift som bygger "mycode.o" från "mycode.c". Om filen "mycode.c" inte finns, kommer Rake att försöka syntetisera en regel för den rekursivt.
När en uppgift syntetiseras från en regel ställs uppgiftens källattribut in på den matchande källfilen. Detta tillåter användare att skriva regler med åtgärder som refererar till källfilen.
Avancerade regler
Alla reguljära uttryck kan användas som regelmönster. Dessutom kan en proc användas för att beräkna namnet på källfilen. Detta möjliggör komplexa mönster och källor.
Följande regel motsvarar exemplet ovan:
regel ( /\.o$/ => -> ( t_name ){ t_name . sub /\.o$/ , '.c' }) gör | t | sh "cc #{ t . source } -c -o # { t . name } " end
OBS: På grund av en egenhet i Ruby-syntaxen krävs parenteser runt en regel när det första argumentet är ett reguljärt uttryck.
Följande regel kan användas för Java-filer:
regel '.class' => -> ( t_name ){ t_name . sub ( /\.class$/ , '.java' ) . sub ( /^classes\// , 'src/' ) } gör | t | java_compile ( t . källa , t . namn ) slut
Nedan är ett exempel på ett enkelt Rake-recept:
namnutrymme :cake do desc 'gör pannkakor' uppgift : pancake => [ :mjöl , :mjölk , :ägg , :bakpulver ] gör puts "syssla" slutuppgift : smör gör lägger "skär 3 matskedar smör i små rutor" slutuppgift :mjöl => :smör gör lägger "använd händerna för att knåda smörrutor till 1 1/2 dl mjöl" slutuppgift :mjölk sätter " lägg till 1 1/4 kopp mjölk" slutuppgift : ägg sätter " lägg till 1 ägg" slut uppgift : bakpulver gör " lägg till 3 1/2 tsk bakpulver" i slutet
Se även
externa länkar
- Rake dokumentation
- rake på GitHub
- Använder Rake-byggspråket av Martin Fowler
- Ruby on Rails Rake handledning på railsenvy.com
- Custom Rake Tasks på railscasts.com
- Rake Tutorial på lukaszwrobel.pl