Як і більшість мов програмування, Ruby використовує широкий набір
сторонніх бібліотек.
{: .summary}

Майже всі ці бібліотеки випускаються у вигляді **gem** —
упакованої бібліотеки або застосунку, який можна встановити за допомогою
інструмента [**RubyGems**][1].

RubyGems — це система пакування Ruby, створена для полегшення створення,
обміну та встановлення бібліотек (у певному сенсі це система пакування
дистрибутивів, подібна до `apt-get`, але орієнтована на Ruby).
Ruby постачається з RubyGems за замовчуванням, починаючи з версії 1.9,
а для попередніх версій RubyGems потрібно [встановлювати вручну][2].

Деякі інші бібліотеки поширюються у вигляді архівів (.zip або .tar.gz)
з **вихідним кодом**. Процеси встановлення можуть відрізнятися,
зазвичай у файлі `README` або `INSTALL` є інструкції.

Розгляньмо, як знаходити бібліотеки та встановлювати їх для власного
використання.

### Пошук бібліотек

Основне місце розміщення бібліотек — [**RubyGems.org**][1], публічний
репозиторій gem-ів, у якому можна шукати та встановлювати пакунки на
свою машину. Ви можете переглядати й шукати gem-и через вебсайт
RubyGems або використовувати команду `gem`.

За допомогою `gem search -r` можна здійснювати пошук у репозиторії
RubyGems. Наприклад, `gem search -r rails` поверне список gem-ів,
пов’язаних із Rails. Опція `--local` (`-l`) виконує локальний пошук
серед встановлених gem-ів. Для встановлення gem-а використовуйте
`gem install [gem]`. Переглянути встановлені gem-и можна командою
`gem list`. Докладніше про команду `gem` — нижче або в
[документації RubyGems][3].

Є й інші джерела бібліотек.
[**GitHub**][5] — основний репозиторій Ruby-орієнтованого контенту.
Зазвичай вихідний код gem-а розміщується на GitHub, а повноцінний
реліз публікується на RubyGems.org.

[**The Ruby Toolbox**][6] — це проєкт, який спрощує огляд відкритих
Ruby-проєктів. Він має категорії для різних типових завдань розробки,
збирає багато інформації про проєкти (наприклад, активність релізів і
комітів або залежності) та оцінює їхню популярність на RubyGems.org і
GitHub. Це допомагає легко знаходити gem, що розв’язує конкретну задачу,
наприклад вебфреймворки, інструменти документації та бібліотеки якості коду.

### Кілька слів про RubyGems

Ось короткий огляд команди `gem` для щоденного використання.
[Детальніша документація][7] охоплює всі аспекти цієї системи пакування.

#### Пошук серед доступних gem-ів

Команда **search** використовується для пошуку gem-ів за рядком.
У відповідь буде показано gem-и, назви яких починаються із заданого рядка.
Наприклад, для пошуку gem-ів, пов’язаних із “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 (поведінка за замовчуванням).
З прапорцем `--local` / `-l` ви виконаєте локальний пошук серед
встановлених gem-ів.

#### Встановлення gem-а

Коли ви знаєте, який gem хочете **встановити**, наприклад популярний
фреймворк Ruby on 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-ів

Для **списку** всіх локально встановлених gem-ів:

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

Щоб отримати (дуже довгий) список усіх gem-ів, доступних на 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` дуже корисна, оскільки виводить список
усіх команд `gem`.

#### Створення власних gem-ів

RubyGems.org має [кілька посібників][3] на цю тему. Також варто
звернути увагу на [Bundler][9] — універсальний інструмент, що допомагає
керувати залежностями застосунку та може використовуватися разом із
RubyGems.



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