Buildovací systém pro Ruby on Rails, který dokáže ulehčit spousty zbytečné práce.
Buildovací systémy jsou známy spíše z linuxu, kde se hojně využívají (Make). Alternativa pro vývoj v Ruby on Rails a používání při vývoji je přávě Rake.
Stručně si naznačíme co všechno rake dokáže:
Když napíšu mnohé další, myslím tím opravdu cokoli, co jste schopni si sami napsat.
Pokusme se vytvořit si první jednoduchý rake soubor. Ten musíme umístit do adresáře lib/rake s příponou .rake
task :myrake do puts "test" end
Tento soubor uložíme jako myrake.rake a můžeme rovnou spustit:
console:>rake myrake (in console:/project) test
Nyní si ukážeme ještě jeden příklad. Vytvoříme si soubor myrake2.rake který bude obsahovat kód:
task :myrake2 => :myrake do puts "test2" end
Po spuštění zjistíte, že se nejprve volá rake myrake.rake a až poté myrake2.rake . Rake myrake2 je závislý na myrake, a proto vyžaduje jeho spuštění před svým vykonáním.
Každý rake file, a každá úloha v něm by měla obsahovat popis, co vlastně dělá, a co obsahuje. K tomu slouží příkaž desc , pomocí něhož nadefinujeme popis. Naše dva příklady bychom přepsali:
desc "Write test2." task :myrake2 => :myrake do puts "test2" end ------------------------------ desc "Write test" task :myrake do puts "test" end
Po vypsání příkazu rake --tasks dostaneme ve výpisu standartních rake souborů navíc:
console:>rake --tasks (in console:branch) ... rake myrake # Write test rake myrake2 # Write test2. ...
Pokud máme více stejných úkolů, které spolu nějakým způsobem souvisí, je vhodné je umístit do stejného rake souboru. Všechny tyto úkoly uvodíme do společné namespace . Lépe to bude vidět na příkladu:
namespace :raketests task :myrake do puts "test" end task :myrake2 => :myrake do puts "test2" end end
Pro přístup nyní musíme použít cestu pomocí namespace: rake raketests:myrake
Rake je pří vývoji v RoR nutné a nezbytené znát. Ulehčíte si tím spousty zbytečné práce a i když si nechcete psát vlastní rake files, tak už samotná instalace jich obsahuje spousty. Všechny si můžete vylistovat právě příkazem rake --tasks . Zde uvedu ty nejzajímavější:
| Příkaz | Popis |
|---|---|
| rake db:migrate | Provede migrace na databázi |
| rake db:schema:dump | Vytvoří do sobuoru schema.rb schéma celé databáze |
| rake db:schema:load | Načte schéma databáze ze schema.rb |
| rake db:sessions:clear | Vyčistí tabulku session |
| rake db:db_name:purge | Vyprázdní databázi |
| rake doc:app | Vytvoří html soubor s dokumentací |
| rake log:clear | Vyčistí log |
| rake tmp:clear | Vyčistí cache, session, ... |
Rake je nedílnou součástí vývoje v Ruby on Rails. Minimálně s předdefinovanými rake příkazy se jistě budete setkávat každodenně.