Interpret Ruby
Existuje několik implementací jazyka Ruby. Zmíním dvě, které jsou pravděpodobně nejznámější:
- MRI (CRuby) – Matz's Ruby Interpreter, referenční implementace v jazyce C od původního autora Yukihiro Matsumoto (Matz).
- JRuby – implementace v jazyce Java, která při běhu využívá Java Virtual Machine.
Každý interpret se liší výkonem, spotřebou paměti a nereferenční interpreti také nemusí odpovídat nejnovější specifikaci jazyka.
RVM: Ruby Version Manager
RVM je nástroj, který z příkazové řádky umožňuje snadno instalovat různé verze Ruby a přepínat mezi nimi.
Na unixových systémech lze nainstalovat následujícím příkazem:
curl -sSL https://get.rvm.io | bash -s stable
Nástroj je možné provozovat i pod Windows, je však nutné použít Cygwin. Návod je popsaný v článku Installing RVM With Cygwin on Windows.
Po instalaci lze snadno zobrazit seznam všech verzí Ruby, které je možné nainstalovat:
rvm list known
Konkrétní verzi nainstalujeme příkazem:
rvm install
Verzí můžeme nainstalovat více a přepínat mezi nimi:
rvm install 2.0 rvm install 2.1 rvm use 2.0 --default
Flag --default
říká, že má být daná verze nastavená jako výchozí i pro příští přihlášení nebo nový shell.
RubyGems
Správce balíčků, který je od verze 1.9 dodáván jako součást standardní knihovny. Jednotlivým balíčkům se říká gem
, a ke správě se používá stejnojmenný příkaz. Balíčky je možné vyhledávat na http://rubygems.org/
Instalace balíčku:
gem install
Instalace balíčku v konkrétní verzi:
gem install-v
Výpis aktuálně nainstalovaných balíčků, včetně jejich verzí:
gem list --local
Bundler
Bundler je nadstavba nad RubyGems, která dokáže spravovat závislosti pro jednotlivé aplikace. Pravidla pro závislosti se píší do souboru Gemfile
, po instalaci se do Gemfile.lock
zapíší konkrétní nainstalované verze.
Soubor může vypadat následovně:
source 'https://rubygems.org' gem 'capistrano', '~> 3.2.1' gem 'capistrano-composer'
Řádek source …
definuje zdroj, ze kterého mají být stahovány závislosti. Zdrojů je možno nadefinovat více. Řádky gem
definují závislosti aplikace. První parametr je název balíčku, volitelný druhý parametr specifikuje verzi. Je možno používat běžné operátory, např. >= 2.1
, nebo = 2.1.1
. Operátor ~>
má speciální význam: poslední část uvedené verze se může libovolně změnit směrem nahoru, předchozí ale nikoliv. ~> 3.2.1
tedy znamená verzi větší nebo rovnou 3.2.1
, ale menší než 3.3
.
U závislostí je možné definovat i další podmínky, za kterých se bude gem instalovat. Lze například závislost omezit pouze na interpret JRuby. Také je možné závislosti dělit do skupin, které je možné při instalaci vypnout či zapnout. Snadno tak lze nástroje pro testování aplikace instalovat pouze ve vývojovém prostředí a na produkční server je neinstalovat. Více informací o souborech Gemfile
naleznete v dokumentaci k Bundleru na stránce věnované Gemfiles.
Závislosti nainstalujeme příkazem
bundle install
Příští spuštění příkazu install
nainstaluje verze uvedené v Gemfile.lock
, pokud chceme závislosti aktualizovat, musíme použít příkaz
bundle update
Bundler instaluje závislosti systémově, nebo můžeme parametrem --path
určit cestu, kam mají být nainstalovány. Pokud mají aplikace jeden balíček v různých verzích, jsou nainstalovány všechny.
Pokud máte takto nainstalováno více verzí balíčku, který obsahuje nástroje pro příkazovou řádku (např. capistrano z příkladu obsahuje nástroj cap
), zajistíme spuštění správného z nich příkazem
bundle exec
Například:
bundle exec cap deploy
Rake
Rake je, dle oficiálního popisu, make pro jazyk ruby. Jedná se o nástroj pro správu a spouštění úloh z příkazové řádky. Typickou úlohou může být například migrace databáze, nebo spuštění HTTP serveru s aplikací.
Dostupné příkazy se definují přímo v aplikaci v souboru Rakefile
, případně rakefile
, Rakefile.rb
, nebo rakefile.rb
. Jejich seznam můžeme vypsat příkazem
rake -T
Nebo pokud používáme Bundler:
bundle exec rake -T
Konkrétní příkaz pak spustíme pomocí
rake[ …]
Závěr
Článek přiblížil nejpoužívanější nástroje z ekosystému jazyka Ruby. Existuje celá řada dalších nástrojů, například RSpec pro testování, interaktivní shell IRB, nebo Capistrano pro deployment aplikací. Capistrano lze s úspěchem použít i na webové aplikace v libovolném jiném jazyce, proto se na něj podíváme blíž. Ale to až někdy příště…