Поиск…


Установка рубиновых камней

В этом руководстве предполагается, что у вас уже установлен Ruby. Если вы используете Ruby < 1.9 вам придется вручную установить RubyGems, поскольку он не будет включен изначально .

Чтобы установить рубиновый камень, введите команду:

gem install [gemname]

Если вы работаете над проектом со списком зависимостей gem, то они будут перечислены в файле с именем Gemfile . Чтобы установить новый проект в проект, добавьте следующую строку кода в Gemfile :

gem 'gemname'

Этот Gemfile используется жемчужиной Bundler для установки зависимостей, требуемых вашим проектом, однако это означает, что вам нужно сначала установить Bundler, выполнив (если вы еще этого не сделали):

gem install bundler

Сохраните файл, а затем запустите команду:

bundle install

Указание версий

Номер версии может быть указан в команде live, с флагом -v , например:

gem install gemname -v 3.14

При указании номеров версий в Gemfile вас есть несколько доступных опций:

  • Не указан никакой версии ( gem 'gemname') Будет установлена последняя версия, совместимая с другими драгоценными камнями в Gemfile .
  • Точная версия указана ( gem 'gemname', '3.14' ) - будет пытаться установить версию 3.14 (и не Gemfile если это несовместимо с другими камнями в Gemfile ).
  • Оптимистичный минимальный номер версии ( gem 'gemname', '>=3.14' ) - будет пытаться установить только последнюю версию, совместимую с другими драгоценными камнями в Gemfile , и сбой, если версия, более или равная 3.14 не совместима. Можно также использовать оператор > .
  • Пессимистический минимальный номер версии ( gem 'gemname', '~>3.14' ). Это функционально эквивалентно использованию gem 'gemname', '>=3.14', '<4' . Другими словами, разрешено увеличивать только число после последнего периода .

Как наилучшая практика : вы можете использовать одну из библиотек управления версиями Ruby, таких как rbenv или rvm . С помощью этих библиотек вы можете установить разные версии Ruby runtimes и gems соответственно. Таким образом, при работе в проекте это будет особенно удобно, потому что большинство проектов кодируются с известной версией Ruby.

Установка Gem из github / файловой системы

Вы можете установить gem из github или файловой системы. Если драгоценный камень был извлечен из git или как-то уже в файловой системе, вы можете установить его с помощью

gem install --local path_to_gem/filename.gem

Установка gem из github. Загрузите источники из github

mkdir newgem
cd newgem
git clone https://urltogem.git

Построить драгоценный камень

gem build GEMNAME.gemspec
gem install gemname-version.gem

Проверка того, установлен ли требуемый камень из кода

Чтобы проверить, установлен ли требуемый камень, изнутри вашего кода вы можете использовать следующее (используя пример nokogiri):

begin
  found_gem = Gem::Specification.find_by_name('nokogiri')
  require 'nokogiri'
  ....
  <the rest of your code>
rescue Gem::LoadError
end

Однако это может быть расширено до функции, которая может использоваться при настройке функций внутри вашего кода.

def gem_installed?(gem_name)
  found_gem = false
  begin
    found_gem = Gem::Specification.find_by_name(gem_name)
  rescue Gem::LoadError
     return false
  else
    return true
  end
end

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

if gem_installed?('nokogiri')
  require 'nokogiri'
else
  printf "nokogiri gem required\n"
  exit 1
end

или же

if gem_installed?('nokogiri')
  require 'nokogiri'
else
  require 'REXML'
end

Использование Gemfile и Bundler

Gemfile - это стандартный способ организации зависимостей в вашем приложении. Основной Gemfile будет выглядеть так:

source 'https://rubygems.org'

gem 'rack'
gem 'sinatra'
gem 'uglifier'

Вы можете указать версии требуемого камня:

# Match except on point release. Use only 1.5.X
gem 'rack', '~>1.5.2'
# Use a specific version.
gem 'sinatra', '1.4.7'
# Use at least a version or anything greater.
gem 'uglifier', '>= 1.3.0'

Вы также можете вытащить драгоценные камни прямо из репозитория git:

# pull a gem from github
gem 'sinatra', git: 'https://github.com/sinatra/sinatra.git'
# you can specify a sha
gem 'sinatra', git: 'https://github.com/sinatra/sinatra.git', sha: '30d4fb468fd1d6373f82127d845b153f17b54c51'
# you can also specify a branch, though this is often unsafe
gem 'sinatra', git: 'https://github.com/sinatra/sinatra.git', branch: 'master'

Вы также можете группировать драгоценные камни в зависимости от того, для чего они используются. Например:

group :development, :test do
    # This gem is only available in dev and test, not production.
    gem 'byebug'
end

Вы можете указать, на какой платформе должны работать определенные камни, если приложение должно работать на нескольких платформах. Например:

platform :jruby do
  gem 'activerecord-jdbc-adapter'
  gem 'jdbc-postgres'
end

platform :ruby do
  gem 'pg'
end

Чтобы установить все драгоценные камни из Gemfile, выполните следующие действия:

gem install bundler
bundle install

Bundler / inline (bundler v1.10 и более поздние версии)

Иногда вам нужно сделать сценарий для кого-то, но вы не знаете, что у него на машине. Есть ли все, что нужно вашему сценарию? Не беспокоиться. Bundler имеет большую функцию, называемую в строке.

Он предоставляет метод gemfile и перед запуском скрипта загружает его и требует всех необходимых драгоценных камней. Маленький пример:

require 'bundler/inline' #require only what you need

#Start the bundler and in it use the syntax you are already familiar with
gemfile(true) do 
  source 'https://rubygems.org'
        gem 'nokogiri', '~> 1.6.8.1'
        gem 'ruby-graphviz'
end


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow