Ruby: установка и управление gem в Ruby

www.rubygems.org – основной сайт с гемами

Ubuntu/Centos/Gentoo

Установка ruby/gems:

sudo apt-get/yum/emerge install ruby
sudo apt-get/yum/emerge install rubygems

Гемы обычно ставятся через утилиту gem – она заведует поиском/установкой/удалениями гемов и имеет другие полезные команды. Краткий ман. Утилита поддерживает мультиверсионность гемов – если последняя вышедшая версия используемого вами gem не совместима с той, которую вы используете сейчас, то можно использовать обе версии одновременно.  Так же установить gem можно указав URL (часто в репозитории гемы не актуальны), но для этого нужно сначала скачать gem specific_install.

sudo gem install snmp/net-ping/builder/spreadsheet/mechanize # установка самой последней версии (RubyGems по умолчанию выберет последнюю)
sudo gem install builder -v 1.1.0 # установка конкретной версии
gem environment – куча инфы (версия руби и гемов, где лежит руби и гемы и прочее)
sudo gem install specific_install # устанавливаем gem для возможности прямой установки по URL
sudo gem specific_install https://github.com/telegram-bot-rb/telegram-bot.git # устанавливаем gem telegram_bot

Так же для установки могут использоваться собранные пакеты с гемами в стандартных репозиториях ОС. Способ хуже. Пригодно для установки только для популярных гемов, например в Gentoo такие гемы ставятся через emerge (-vp проверяем отсутствие конфликтов с опцией pretend, -v – устанавливаем). Точные названия можно посмотреть на gentoo.org

sudo emerge -vp dev-ruby/mechanize
sudo emerge -vp dev-ruby/ruby-oci8
sudo emerge -vp phantomjs

После установки gem, достаточно написать команду require<имя gem>, чтобы подключить его. Т.е. работа с гемами не отличается от работы с обычными библиотеками.

require 'net/ping'

Если после этого пишет “no such file to load — <gem_name>”, а gem при этом установлен локально – может помочь строчка require ‘rubygems’.

/home/redkin_p/bin/test.rb:6:in `require': no such file to load -- snmp (LoadError)
 from /home/redkin_p/bin/test.rb:6

Другие команды

gem list |snmp/builder| # список гемов 
gem list --remote # показывает все хдоступые гемах в репозитории, а не локально (как без опции) 
gem list --remote --name-matches net-ping # ищем конкретный гем 
sudo gem uninstall net-ping # удаление GEM
sudo gem cleanup rjb # удаление старых версий
sudo gem uninstall telegram-bot-ruby --version 0.8.6.1 # удаление определенной версии
gem environment # тут можно посмотреть много разной инфы. К примеру очень полезен путь до гемов, исполняемый ruby

Пример разбора ошибок установки gem из-за системных библиотек и других зависимых gem есть в статье про mechanize.

Если Ruby установлен через RVM:

rvm 2.4.0 # переходим в RVM
gem install unicode # ставим gem

Leave a Reply