Как и в большинстве языков программирования, в Ruby можно использовать широкий
набор сторонних библиотек.
{: .summary}

Большая часть из них реализована в форме **гема**. [**RubyGems**][1] –
менеджер пакетов Ruby, созданный для упрощения процесса создания,
распространения и установки библиотек (в каком-то смысле это
распределенный пакетный менеджер, похожий, скажем, на `apt-get`, но
нацеленный на Ruby приложения). С версии Ruby 1.9 RubyGems используются
по умолчанию, хотя для предыдущих версий его нужно было устанавливать [вручную][2].

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

Давайте взглянем на поиск библиотек и установку их для дальнейшего
использования.

### Поиск библиотек

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

Используя команду `gem search -r`, вы можете проверить репозиторий
RubyGems. Например, `gem search -r rails` вернет список относящихся к
Rails библиотек. С опцией `--local`(`-l`) вы можете произвести локальный
поиск среди установленных у вас гемов. Чтобы установить гем, используйте
`gem install [gem]`. Просмотреть список установленных библиотек можно
командой `gem list`. Для более подробной информации о команде `gem`
смотрите ниже или почитайте [документацию RubyGems][3].

Также есть и другие источники библиотек. [RubyForge][4] был популярным
домом для библиотек Ruby, но в последний год возросла популярность [**GitHub**][5],
как одного из главных хранилищ исходного кода приложений околорубиевой тематики.
Намного чаще сейчас исходный код гема размещен на GitHub и сам гем опубликован
на RubyGems.org.

[**The Ruby Toolbox**][6] это проект, который позволяет легче
исследовать проекты на Ruby с открытым исходным кодом. Там есть
категории для различных проблем разработки, содержащие большое
количество информации о проектах, вроде даты релиза и активности
разработчиков, а также зависимости и рейтинг проекта, основанный на его
популярности на RubyGems.org и GitHub.com. Поиск поможет быстрей найти
то, что вы ищете.

### Еще пару слов о RubyGems

Это был краткий обзор команды `gem` для вашего повседневного использования.
[Более подробная документация][7] также доступна, она покрывает все аспекты
данной пакетной системы.

#### Поиск среди доступных гемов

Команда **search** может быть использована для поиска гемов по названию.
Гемы, название которых начинаются с заданной строки, будут отображены в
результатах. Например, чтобы найти гемы, относящиеся к "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` вы можете совершить локальный поиск среди
установленных у вас гемов.

#### Установка гема

Когда вы знаете, какой гем вы желаете **установить**, например, популярные 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>

#### Список всех гемов

Для **просмотра** всех локально установленных гемов:

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

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

#### Создание своего собственного гема

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/
