Základy ruby gemů

Používám ruby gemy už několik týdnů a je to skvělé, ale nebyl jsem si jistý, co se děje pod kapotou, když jsem jeden přidal do své aplikace. Tento příspěvek na blogu mi tedy má pomoci pochopit, jak gemy fungují, a snad pomůže i vám.

Ruby gem je zabalený kód v ruby, který můžete přidat do své aplikace. To vám může ušetřit čas tím, že použijete kód, který k řešení podobných problémů napsali jiní. Pokud byste například chtěli změnit barvu nějakého textu, mohli byste nainstalovat a použít gem colorize. Získáte všechny jeho funkce, aniž byste museli tento kód psát sami.

Sinatra je gem, Rack je gem a překvapilo mě, že i Rails je gem. Všechny veřejné gemy jsou publikovány prostřednictvím RubyGems.org. Zde mohou lidé přispívat a sdílet je s komunitou.

Začneme instalací gemu

Vybereme si gem a nainstalujeme ho. Rozhodl jsem se přidat do své aplikace gem colorize, který mění barvu řetězce, který mu předáme. Můžete spustit příkaz gem install gem_name, abyste gem stáhli do svého počítače a zpřístupnili jej svým aplikacím. Zajímá vás, kde se tento gem po instalaci nachází? Můžete spustit příkaz gem which gem_name a ten vám přesně řekne, kde se nachází.

gem install colorize

Chcete-li tento gem použít v našem kódu, budete muset gem vyžadovat na začátku svého souboru vložením require ‘gem_name’. Uděláme to proto, abychom měli přístup ke gemu a nemuseli nyní psát vlastní kód pro obarvení textu.

require ‘colorize’

Teď, když máte gem nainstalovaný a vyžadovaný, můžete ho používat. Pokud přejdete na repozitář gemu GitHub, obvykle tam najdete důležité informace o jeho funkcích a o tom, jak je používat.

https://github.com/fazibear/colorize

Pojďme jej použít!”

Takže jsme si přečetli readme a nyní chceme přidat do našeho textu nějakou barvu. Ve svém kódu jsem přidal tři různé barvy, a to voláním .colorze(:color) na řetězec.

Spuštění kódu

Skvělé! Nevypadá to pěkně? Nainstalovali jsme tedy náš gem a zdá se, že funguje, ale co když máme větší aplikaci, která vyžaduje mnoho gemů? Volání gem install a vyžadování jednotlivých gemů vypadá jako spousta práce. Určitě existuje jednodušší způsob.

Bundler

Bundler nám výrazně usnadní život. Co je to bundler? No samozřejmě je to drahokam! Sleduje jednotlivé drahokamy a instaluje přesně ten drahokam a jeho verzi, kterou potřebujete ve své aplikaci použít. Abyste mohli bundler používat, budete potřebovat soubor Gemfile v adresáři svého projektu a v něm můžete uvést libovolný počet gemů. K tomu stačí otevřít soubor Gemfile a přidat gem ‘jméno_gemu’.

Jakmile jej přidáte do souboru Gemfile, nezapomeňte v terminálu spustit bundle install. Tím se nainstalují všechny drahokamy uvedené ve vašem souboru Gemfile spolu s jejich závislostmi. To vám rozhodně usnadní práci. Skvělé je, že Ruby 2.6 a novější obsahuje bundler automaticky, takže ho nebudete muset instalovat sami.

Zdá se, že na začátek našich souborů musíme ještě přidat require ‘gem_file’, a to se také zdá jako spousta práce, pokud jich máme mnoho. Ukazuje se, že na to bundler myslel také. Na začátek souboru .rb můžete přidat require ‘bundler’ a napsat Bunlder.require(:default). To, co se děje pod kapotou, je volání require ‘jméno_gemu’ pro každý gem, který máte ve svém souboru gem.

Bundler.require(:default)

Po spuštění instalace bundle si můžete všimnout, že se instaluje spousta gemů, které jste nepřidali. Proč tomu tak je? Mnoho drahokamů vyžaduje, aby spolu s nimi byly nainstalovány další drahokamy. Například rails bude vyžadovat mnoho dalších gemů a tyto gemy mohou vyžadovat další gemy atd. Bundler se ujistí, že všechny nainstalované verze gemů jsou vzájemně kompatibilní.

Po zjištění správných verzí jednotlivých gemů zaznamená tyto verze do dalšího souboru s názvem Gemfile.lock. To umožňuje nainstalovat přesně stejnou verzi na každý počítač, který bude potřebovat spustit tuto aplikaci.

Soubor Gemfile.lock

V mém souboru Gemfile.lock vidíte, že lolize vyžaduje gem paint a verze, které může použít. Takže bundler pro nás chytne tento gem a správnou verzi. Není to užitečné? Díky bundleru!

Takže to je ono! Doufám, že vám to pomohlo pochopit základy gemů a bundleru. Existuje mnoho gemů, které můžete použít, a můžete je vyhledat zde. https://rubygems.org/.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.