Hlavní navigace

Utilitky pro Ruby: balíčkovací systém RubyGems

Jakub Šťastný

Jak programovat v Ruby a v Ruby on Rails si můžete přečíst všude. Ruby má ale také spoustu pomocných utilitek, jako je třeba balíčkovací nebo buildovací systém, o kterých se moc nepíše. Přitom právě ony dělají vývoj mnohem snazší a příjemnější. A co vy — znáte je?

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.

Odkazy

Našli jste v článku chybu?

14. 7. 2007 13:19

Gems jsou sice strašně krásná věc, ale z mně neznámého důvodu je nelze současně používat s grafickou knihovnou RUDL. Nevíte někdo, kde je problém?

3. 7. 2007 13:19

snek (neregistrovaný)
Muzete mi, prosim, osvetlit co znamena, ze neco bylo "kreativne napsano"?
Dekuji
Vitalia.cz: Vychytané vály a válečky na vánoční cukroví

Vychytané vály a válečky na vánoční cukroví

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Měšec.cz: mBank cenzuruje, zrušila mFórum

mBank cenzuruje, zrušila mFórum

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

DigiZone.cz: Flix TV: dva set-top boxy za korunu

Flix TV: dva set-top boxy za korunu

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

Podnikatel.cz: Chaos u EET pokračuje. Jsou tu další návrhy

Chaos u EET pokračuje. Jsou tu další návrhy

Vitalia.cz: Když přijdete o oko, přijdete na rok o řidičák

Když přijdete o oko, přijdete na rok o řidičák