Co jsou to RubyGems?
RubyGems jsou balíčkovací systém pro Ruby. Díky RubyGems můžete snadno instalovat jak knihovny pro Ruby, tak další s Ruby spřízněný software, jako je například utilitka Rake, deployovací nástroj Capistrano, webový server Mongrel nebo framework Ruby on Rails. RubyGems jsou napsány v Ruby, jsou tedy multiplatformní a můžete si jejich schopností vychutnat jak pod Linuxem, tak ve Windows či u rubyistů tak populárním Mac OS X. Jedná se o dosti sofistikovaný apt-like balíčkovací systém, který vám umožní instalaci knihovny v určité verzi či rovnou několika různých verzích dle vašich požadavků. Že RubyGems podporují závislosti myslím ani není třeba říkat.
Již jen dodám, že kýžený balíček se jmenuje rubygems
a vlastní program se pak volá gem
. Pojďme si to nyní vyzkoušet prakticky!
Instalujeme software s RubyGems…
Pro zkušené linuxáky jistě nebude žádným překvapením, že pro instalaci software jsou třeba rootovská práva. Je tomu tak proto, že požadovaný software je instalován do složky /usr/lib/ruby/gems/<major_verze_ruby>
, čili při dnešním Ruby 1.8.6 se použije složka /usr/lib/ruby/gems/1.8
. Takto je tomu defaultně, nicméně není problém používat RubyGems pod neprivilegovaným uživatelem či jen instalovat software jinam (stačí nastavit proměnnou prostředí GEM_HOME). Ale dost již bylo řečí, jdeme na to:
gem install rails
Při zadání zmíněného příkazu dostanete na výběr různé verze Ruby on Rails, které jsou na serveru dostupné. Volbou verze a souhlasem s nainstalováním závislostí se vám nainstaluje balíček do systému.
Verzi můžeme rovnou specifikovat, a to pomocí gem install
<balik>-<verze>
. RubyGems jsou však opravdu sofistikovaný systém, a proto můžeme chtít například balíček verze 0.0.2 nebo vyšší, což provedeme pomocí:
gem install -r progressbar --version '> 0.0.2'
Vyhledávání
Vyhledávání se odvíjí od vypsání seznamu všech dostupných gemů pomocí gem query --remote
či chcete-li zkráceně, pak gem q -R
. Pustíte-li tento příkaz, uvidíte, že na nedostatek gemů si stěžovat opravdu nelze.
K nalezení konkrétního balíčku použijeme gem query --remote
--name-matches <vyraz>
. Použít můžete i regulární výrazy.
Informace o balíčku
Kompletní metadata balíčku lze vypsat příkazem gem
specification <balicek>
. O metadatech si povíme více v příštím dílu, kdy se budeme věnovat maintainerskému pohledu na RubyGems.
Upgrade
Jak jste viděli, inspirace debianím apt je jistě nepopiratelná. U upgrade bude však výjimka – na gem update && gem upgrade zapoměňte, upgrade zajišťuje pouhé gem update
.
Nechceme-li upgradovat všechny balíčky, lze pomocí gem update
<balik>
aktualizovat pouze zvolený software či si můžete pomocí gem outdated
nechat vypsat neaktuální balíčky.
Odebrání balíčku
K odebrání balíčku slouží gem uninstall
. Máme-li v systému nainstalovaných verzí více, dostaneme na výběr, kterou verzi že si to přejeme odinstalovat. Závisí-li na balíčku nějaké závislosti, budeme na ně upozorněni.
Lokální balíčky
Příkaz gem query --local
nebo též gem q -L
vypíše lokálně instalované balíčky.
Že lokální či vzdálené balíčky lze odlišit volbami --local
či --remote
, vám jistě neuniklo. Užitečné je vědět, že pokud není žádná z těchto voleb uvedena, zkouší se zpravidla obě uvedené varianty, s tím, že přednost mají lokální akce.
Shrnutí příkazů aneb tahák to jistí
Činnost | Příkaz |
---|---|
Instalace | gem install <balicek> |
Vyhledávání | gem q -R <vyraz> |
Odinstalování | gem uninstall <balicek> |
Vypsání metadat | gem specification <balicek> |
Aktualizace balíčků | gem update |
Konfigurační soubor
Na mnohé volby se vyplatí mít aliasy, s tím si ale už jistě poradíte sami. Zajímavější je, že i RubyGems mají svůj vlastní konfigurační soubor. Jmenuje se logicky ~/.gemrc
a jedná se o klasický YAML.
Pokud například chcete, aby se některé akce spouštěly vždy, lze to specifikovat ve volbě gem takto:
gem: --gen-rdoc --run-tests
Výše uvedeným zápisem dosáhneme toho, že při každé instalaci automaticky necháme proběhnout jednotkové testy a vygenerujeme dokumentaci pomocí RDoc.
Tolik namátkou, dále zde mohou být například parametry RDoc nebo určení GEMPATH, pro podrobnosti vizte manuál.
Příště
Dnešní část byla uživatelská, příští tedy bude programátorská a maintainerská. Řekneme si jak o psaní programů s využitím knihoven dostupných z lokálního RubyGems repozitáře, tak také něco více o formátu gemovských balíčků a naučíme se dělat vlastní balíčky.
Máte-li návrhy na další verze seriálu, budou jedině vítány. Zatím je naplánován buildovací systém Rake, řeč přijde také na dokumentační utilitky ri a RDoc, utilitky pro distribuci Tar2RubyScript, AllInOneRuby a možná RubyScript2exe. Také uvažuji říci pár slov o webovém serveru Mongrel. Máte-li nějaká přání, pište do diskuse. Bude-li to v mých silách, rád o požadované problematice napíši.