Както повечето популярни езици за програмиране, и за Ruby съществуват
множество разнообразни библиотеки.
{: .summary}

Повечето от тях са във формата на **gem** пакети. [**RubyGems**][1] е пакетният
мениджър на Ruby, помагащ при създаването, разпространението и инсталирането на
библиотеки (подобно на `apt-get`, но за Ruby софтуер). RubyGems е включен в
Ruby от версия 1.9, а при предишни версии е нужно да се [инсталира ръчно][2].

Други библиотеки се разпространяват като архивирани (.zip или .tar.gz)
директории с **изходен код**. Инсталирането на такива пакети е различно и
обикновено е описано в `README` или `INSTALL` файл.

Нека погледнем как се намират и инсталират библиотеки.

### Намиране на библиотеки

Основното място, където се хостват библиотеки, е [**RubyGems.org**][1].
Може да разгледате сайта или да използвате `gem` командата.

С помощта на командата `gem search -r` може да бъде изследвано хранилището на
RubyGems. Например, `gem search -r rails` ще върне списък с всички gem-ове,
свързани с Rails. С опцията `--local` (`-l`) се търси само измежду вече
инсталираните gem-ове. За инсталиране на gem се използва командата `gem install
[gem]`. Разглеждането на инсталираните gem-oве става с командата `gem list`.
За повече информация относно `gem` командата, вижте по-долу или отидете на
[RubyGems документация][3].

Има и други начини за снабдяване с библиотеки. [RubyForge][4] беше популярно
място за Ruby софтуер, но в последните години за хостване на Ruby код се
използва предимно [**GitHub**][5], а пакетираните gem-ове се публикуват на
RubyGems.org.

[**The Ruby Toolbox**][6] е сайт, който улеснява търсенето на Ruby проекти с
отворен код. Gem-oвете са разделени на категории и страниците им съдържат
информация като честотата на актуализации, история и пoпулярност. Има и
търсене, което улеснява намирането на това, което ви е нужно.

### Още няколко думи относно RubyGems

Следва бърз преглед на `gem` командата за всекидневна употреба. Съществува и
[по-детайлна документация][7], покриваща всички аспекти на пакетният мениджър.

#### Търсене измежду наличните gem-ове

Командата **search** се използва за търсене на gem-oве.
Тя връща списък с gem-oве, чийто имена започват с даденият низ. Например, при
търсене на gem-oве, свързани с "html":

<figure class="highlight"><pre><code class="language-sh" data-lang="sh"><span class="nv">$ </span>gem search <span class="nt">-r</span> html

<span class="k">***</span> REMOTE GEMS <span class="k">***</span>

html-sample <span class="o">(</span>1.0, 1.1<span class="o">)</span></code></pre></figure>

Флагът `--remote` / `-r` задава да бъде използвано официалното
хранилище на RubyGems.org (включен е по подразбиране).
Търсене в списъкът с инсталирани локално gem-oве става с подаването на
`--local` / `-l`.

#### Инсталиране на gem

След като решите кой gem желаете да инсталирате, например Rails:

<figure class="highlight"><pre><code class="language-sh" data-lang="sh"><span class="nv">$ </span>gem <span class="nb">install </span>rails</code></pre></figure>

За инсталирането на специфична версия се използва флагът `--version` / `-v`:

<figure class="highlight"><pre><code class="language-sh" data-lang="sh"><span class="nv">$ </span>gem <span class="nb">install </span>rails <span class="nt">--version</span> 5.0</code></pre></figure>

#### Показване на списък с всички gem-oве

За **списък** с всички инсталирани gem-ове:

<figure class="highlight"><pre><code class="language-sh" data-lang="sh"><span class="nv">$ </span>gem list</code></pre></figure>

За списък с всички gem-oве, налични на RubyGems.org:

<figure class="highlight"><pre><code class="language-sh" data-lang="sh"><span class="nv">$ </span>gem list <span class="nt">-r</span></code></pre></figure>

#### Помощ!

Документацията е налична във вашият терминал:

<figure class="highlight"><pre><code class="language-sh" data-lang="sh"><span class="nv">$ </span>gem <span class="nb">help</span></code></pre></figure>

Например командата `gem help commands` e много полезна, защото извежда списък с
всички `gem` команди.

#### Създаване на gem-oве

На RubyGems.org има [няколко ръководства][3] по тази тема. Може също така да
разгледате и [Bundler][9], инструмент, който помага с управлението на
зависимостите на даден проект. Може да бъде използван заедно с
RubyGems.



[1]: https://rubygems.org/
[2]: https://rubygems.org/pages/download/
[3]: http://guides.rubygems.org/
[4]: http://rubyforge.org/
[5]: https://github.com/
[6]: https://www.ruby-toolbox.com/
[7]: http://guides.rubygems.org/command-reference/
[9]: http://bundler.io/
