Linux что такое gem

Linux что такое gem

Gems are programs and libraries for the Ruby programming language. They are distributed by Ruby’s package manager, which is called RubyGems, which is accessed by the gem command.

This page is meant to be Ruby equivalent of Python’s pip page.

Installation

The gem command is installed with the RubyGems package, which will be installed to support the Ruby programming language. It is not advised to install RubyGems to the system’s world set. See the Ruby article for more information.

USE flags

USE flags for dev-ruby/rubygems Centralized Ruby extension management system

server Install support for the rubygems server
test Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently)

Emerge

Usage

Invocation

RubyGems is a sophisticated package manager for Ruby. This is a basic help message containing pointers to more information. Usage: gem -h/--help gem -v/--version gem command [arguments. ] [options. ] Examples: gem install rake gem list --local gem build package.gemspec gem help install Further help: gem help commands list all 'gem' commands gem help examples show some examples of usage gem help gem_dependencies gem dependencies file guide gem help platforms gem platforms guide gem help show help on COMMAND (e.g. 'gem help install') gem server present a web page at http://localhost:8808/ with info about installed gems Further information: http://guides.rubygems.org

Gem installation

To install a package using the gem command, where gems is the desired gems:

View gem’s environment

The following command can be used to query gem installation paths and other useful information:

See the Application level package management article for best practices and information on adding gem binaries the user’s PATH .

Источник

RubyGems — подробно

Для начала определимся с понятиями:
RubyGems — фрэймворк для установки и запаковки Ruby библиотек и приложений.
gem — пакет(файл) с библиотекой или приложением. Имеет стандартизированный вид и расположен в хранилище в сети.
gem command tool — RubyGems предоставляет утилиту «gem» для работы с gem пакетами из командной строки. Она интегрирована с Ruby и позволяет получать доступ к установленным gem’ам как к библиотекам.

В чем же предназначение RubyGems?

До того как появилась RubyGems, для установки новой библиотеки нужно было найти, скачать её, попытаться установить, часто лишь для того, чтобы убедиться в отсутствии нужных зависимостей. Если же библиотека запакована с помощью RubyGems, достаточно попросить RubyGems сделать это за нас и получить установленную, интегрированную библиотеку со всеми нужными зависимостями. В дополнение ко всему утилита gem — платформонезависима, неважно какую ОС вы используете, везде механизм установки библиотек и приложений будет одинаков. Здорово, правда?

Читайте также:  Ntp обновить время linux

Под катом будут описаны:
1) Поиск, получение деталей, установка gem’s
2) Доступ документации по установленному gem
3) Использование установленных gem’s
4) Работа с версиями gem’s
5) Создание собственных gem’s

1. Поиск, получение деталей, установка gem’s

Допустим в вашем текущем проекте генерируется много XML. И где то вы слышали, что есть замечательная библиотека Jim Weirich’s Builder library, которая позволит вам создавать XML прямо в коде Ruby.
Посмотрим, доступна ли она в качестве gem:
% gem query —details —remote —name-matches build
*** REMOTE GEMS ***
AntBuilder (0.4.3)
Author: JRuby-extras
Homepage: jruby-extras.rubyforge.org
AntBuilder: Use ant from JRuby. Only usable within JRuby
builder (2.1.2)
Author: Jim Weirich
Homepage: onestepback.org
Builders for MarkUp.
.

—details — отображает детали о найденном gem
—remote — ищет на удалённом хранилище (—locale — поиск на локальной машине)
—name-matches build — фильтрует gem’s по содержанию строки ‘build’ в имени
Номер около названия каждого gem, показывает последнюю версию.
Список всех доступных версий для определённого gem, запустим команду list с опцией —all:
% gem list —details —remote —all builder
*** REMOTE GEMS ***
builder (2.1.2, 2.1.1, 2.0.0, 1.2.4, 1.2.3, 1.2.2, 1.2.1, 1.2.0, 1.1.0,
1.0.0, 0.1.1, 0.1.0)
Author: Jim Weirich
Homepage: onestepback.org
Builders for MarkUp.

Для установки самой последней версии:
% gem install builder #RubyGems сам выберет последнюю
По умолчанию (если вы не используете RVM), для установки gem’s используются общие системные директории, так что под Unix нужно добавлять sudo перед командой gem.
Список уже установленных на вашем компьютере gem’s:
gem list
*** LOCAL GEMS ***
builder (2.1.2)

2. Чтение документации по установленному gem

Мы установили gem builder, возникает вопрос, как с ним работать?
В большинстве случаев gem содержит документацию, она хранится в /doc директории, например:
#Узнаем путь где хранятся наши gem’s
% gem environment gemdir
/usr/local/lib/ruby/gems/1.9.0

/usr/local/lib/ruby/gems/1.9.0/doc — здесь лежит документация к установленным gem’s
/usr/local/lib/ruby/gems/1.9.0/doc/builder-2.1.2/rdoc/index.html — полный путь к документации gem’а builder в моём случае

Есть 2 способа читать документацию:
1. Заходить в директорию с документацией гема и запускать файл index.html
2. Более простой способ, запустить web сервер, командой % gem server
По умолчанию он запустится на порту 8808 и будет доступен по ссылке localhost:8808
В браузере вы увидите документацию на все установленные gem’s.
Путь к директории с gem’s и порт могут быть перезаданы с помощью опций -p и -d

3. Использование установленных gem’s

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

# пример генерации XML с помощью установленной нами библиотеки require 'builder' xml = Builder::XmlMarkup.new(target: STDOUT, indent: 2) xml.person(type: "programmer") do xml.name do xml.first "Dave" xml.last "Thomas" end xml.location "Texas" xml.preference("ruby") end 

4. Работа с версиями gem’s

Что если последняя вышедшая версия используемого вами gem не совместима с той которую вы используете сейчас?
К счастью, RubyGems позволяет нам одновременно хранить несколько версий gem. Указанные ниже команды установят обе версии builder.
% gem install builder -v 2.1.2
% gem install builder -v 1.1.0
% gem list builder
*** LOCAL GEMS ***
builder (2.1.2, 1.1.0)

#Подключение builder v.1.1.0 gem 'builder', '= 1.1.0' require 'builder' xml = Builder::XmlMarkup.new(STDOUT, 2) xml.person do name("Dave Thomas") location("Texas") end 

Тут доступны ещё несколько трюков:
gem ‘builder’ , ‘> 1’ — использовать версию больше чем первую
gem ‘builder’ , »>= 2.2.0′, ‘ < 3.0'' — использовать версию больше 2.2.0 и меньше 3.0
Полный список выражений:
= идентичная версия
!= неидентичная версия
> версия больше чем
< версия меньше чем
>= большая и равная версия
~> примерно больше чем (подробнее RubyGems docs)

Читайте также:  Как в линуксе расшарить папку

5. Создание собственных gem’s

  1. написание кода соответсвующего gem структуре
  2. создание файла спецификации (ourgem.gemspec)
  3. создание gem файла
    % gem build mygem.gemspec
  4. размещение созданного гема на сервере rubygems.org
    %gem push mygem.gemspec

Источник

Комфортное управление пакетами в Ruby

RVM — Ruby Version Manager (менеджер управления пакетами в ruby) сослужит хорошую службу в тех частых ситуациях, когда вам может потребоваться запуск нескольких версий ruby на одной машине или же нескольких проектов с разными наборами gem’ов для них. Чем-то напоминает virtualenv, если сравнивать с аналогичным приложением для python.

Данный пост предположительно рассчитан на новоиспечённых рубистов и предназначен для облегчения и в какой-то мере даже автоматизации их труда.

Что такое gem?

Gem (драгоценный камень, жемчужина) — пакет ruby, предоставляющий какую-то функциональность. Например, библиотека redcarpet , доступная в виде gem’а, обеспечивает поддержку markdown.

Что такое gemset?

Gemset (set: набор, комплект) — набор gem’ов.

Установка RVM

$ \curl -L https://get.rvm.io | bash Downloading RVM branch master % Total % Received % Xferd Average Speed Dload Upload 100 124 100 124 0 0 107 100 1084k 100 1084k 0 0 234k * To start using RVM you need to run `source /home/user/.rvm/scripts/rvm`

Перезапускаем консоль и убеждаемся в том, что rvm был успешно установлен:

$ rvm -v rvm 1.23.13 $ rvm get stable --auto-dotfiles

Дополним переменную PATH, дабы указать путь к директории rvm. Запись нужно сделать в .bashrc или .zshenv .

# .bashrc export PATH="$PATH:$HOME/.rvm/bin"

Дальше любопытно было бы просмотреть список доступных для установки и уже установленных пакетов ruby.

$ rvm list known # просмотреть все доступные для установки версии Ruby $ rvm list # все установленные версии Ruby =* ruby-1.9.3-p448 [ x86_64 ] # => - current - текущая версия # =* - current && default - текущая и спользуется по-умолчанию # * - default - используемая по-умолчанию версия

Использование разных версий ruby и gemset’ы

$ source ~/.rvm/scripts/rvm # активировать rvm $ rvm install 1.9.3 # установить несколько версий ruby $ rvm install 2.0.0 $ rvm use ruby-2.0.0-p247 --default # переключиться на ruby 2 и использовать v2 по-умолчанию $ rvm list ruby-1.9.3-p448 [ x86_64 ] =* ruby-2.0.0-p247 [ x86_64 ] # => - current # =* - current && default # * - default

Для примера создадим gemset jekyll , где будут собраны все нужные одноимённому генератору статических страниц gem’ы.

$ source ~/.rvm/scripts/rvm # «включаем» rvm $ rvm use 1.9.3@jekyll --create # создать gemset $ rvm use 1.9.3@jekyll --default # выбирать его по-умолчанию $ gem install jekyll jekyll-tagging i18n # установка gem'ов $ gem list # просмотр установленных в выбранном gemset'е gem'ов i18n (0.6.5) jekyll (1.2.1) jekyll-tagging (0.5.0) liquid (2.5.3) maruku (0.7.0)

Gemset’ы создаются для определённой версии ruby. Так, при переключении с одной версии на другую вы будете всегда видеть разный набор gemset’ов: отображаются они также лишь для своей версии.

$ rvm gemset list # набор gemset'ов для ruby2 gemsets for ruby-2.0.0-p247 (default) => example global $ cd workspace/jekyll # переход в директорию проекта, где используется ruby1.9 $ rvm gemset list # набор gemset'ов для ruby1.9 gemsets for ruby-1.9.3-p448 (default) global => jekyll

Но здесь мы забежали чуть вперёд. Дело в том, что при переходе в директорию проекта, автоматически меняется версия ruby и набор gemset’ов, о чём речь пойдёт чуть ниже.

Читайте также:  Linux on 64mb ram

Gemset’ы можно удалять(delete), очищать(), экспортировать(export) и импортировать(import) gem’ы из одного в gemset’a в другой. Наиболее часто используемые действия отражены в данной ниже таблице.

команда описание
rvm gemset create создать новый gemset
rvm gemset export new.gems экспорт списка gem’ов в файл new.gems
rvm gemset import new.gems импорт в текущий gemset списка gem’ов из файла new.gems
rvm gemset delete удалить gemset
rvm gemset empty очистить gemset
rvm gemset delete example —force полностью удалить gemset example
rvmreset перезагрузка RVM
rvm uninstall удалить версию Ruby, оставить исходники
rvm implode полностью удалить RVM!
rvm list known получить список всех версий ruby доступных для установки
rvm list отобразить список установленных версий ruby
rvm gemset list просмотреть список gemset’ов в выбранной версии ruby
rvm install 1.9.3 установить ruby версии 1.9.3
rvm remove 1.9.3 удалить ruby версии 1.9.3
rvm use 1.9.3 переключиться на ruby версии 1.9.3
rvm use 1.9.3@jekyll —default использовать версию ruby 1.9.3 c gemset jekyll по умолчанию
rvm use system использовать системную версию ruby

Создание отдельного окружения для проекта

Бывают случаи, когда необходимо не просто использовать разные версии ruby, но и разные версии gemset’ов для разных проектов. В этом посильную помощь может оказать создание своего окружения для каждого из проектов.

В примере выше мы создали gemset jekyll , который использует версию ruby 1.9.3 и собственный набор gem’ов. Теперь у нас имеется два пути для работы с ним.

Переключение между gemset’ами

Во-первых, можно переключаться между gemsets при необходимости.

$ rvm gemset use global $ rvm gemset use jekyll

Но зачастую быстрее один раз внести необходимые настройки. Для этого следует создать два файла в каталоге с проектом: .ruby-gemset и .ruby-version , куда и поместить информацию об используемом в проекте gemset’е и версии ruby соответственно.

$ cat ~/workspace/jekyll/.ruby-gemset jekyll $ cat ~/workspace/jekyll/.ruby-version ruby-1.9.3-p448

Теперь достаточно просто зайти в директорию проекта, и нужные нам параметры будут установлены автоматически.

$ cd workspace/jekyll $ rvm list => ruby-1.9.3-p448 [ x86_64 ] * ruby-2.0.0-p247 [ x86_64 ] # => - current # =* - current && default # * - default

То есть, если вы использовали версию ruby 2, после перехода в каталог с проектом, она автоматически изменится на версию, указанную в .ruby-version , что достаточно удобно.

Источник

Оцените статью
Adblock
detector