Поиск…


замечания

Документация Gemfile

Для проектов, которые, как ожидается, будут расти, неплохо добавить комментарии к вашему Gemfile . Таким образом, даже в больших установках вы все равно знаете, что делает каждый камень, даже если имя не является самоочевидным, и вы добавили его 2 года назад.

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

Примеры:

# temporary downgrade for TeamCity
gem 'rake', '~> 10.5.0'
# To upload invoicing information to payment provider
gem 'net-sftp'

Что такое драгоценный камень?

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

Точнее, даже рельсы - не что иное, как драгоценный камень. Много драгоценных камней построено на рельсах или других драгоценных камнях (они зависят от этого драгоценного камня) или являются отдельными.

В проекте Rails

Gemfile

Для вашего проекта Rails у вас есть файл Gemfile . Здесь вы можете добавить драгоценные камни, которые вы хотите включить и использовать в своем проекте. После добавления вам необходимо установить драгоценный камень, используя bundler (см. Раздел Bundler).

Gemfile.lock

Как только вы это Gemfile.lock , ваш Gemfile.lock будет обновлен вашими недавно добавленными драгоценными камнями и их зависимостями. Этот файл блокирует используемые вами драгоценные камни, поэтому они используют эту конкретную версию, объявленную в этом файле.

GEM
remote: https://rubygems.org/
specs:
devise (4.0.3)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0, < 5.1)
responders
warden (~> 1.2.3)

Этот пример для гема devise . В Gemfile.lock версия 4.0.3 , чтобы сообщать при установке вашего проекта на другой машине или на вашем производственном сервере, для которой указанная версия используется.

развитие

Либо один человек, группа или целое сообщество работает и поддерживает драгоценный камень. Выполненная работа, как правило , освобожден после того, как некоторые issues были исправлены или features , которые были добавлены.

Обычно выпуски следуют принципу Semantic Versioning 2.0.0 .

Bundler

Самый простой способ обработки и управления драгоценными камнями - использование bundler . Bundler - это менеджер пакетов, сопоставимый с bower.

Чтобы использовать пакет, вам сначала нужно его установить.

gem install bundler

После того как у вас Gemfile и запущен Gemfile вы должны добавить gems в свой Gemfile и запустить

bundle

в вашем терминале. Это устанавливает ваши недавно добавленные драгоценные камни в ваш проект. В случае возникновения проблемы вы получите приглашение в своем терминале.

Если вас интересует более подробная информация, я предлагаю вам ознакомиться с документами .

Gemfiles

Для начала, gemfiles требуют, по крайней мере, один источник, в виде URL-адреса для сервера RubyGems.

Создайте Gemfile с исходным кодом rubygems.org, запустив bundle init . Используйте https, поэтому ваше соединение с сервером будет проверено с помощью SSL.

source 'https://rubygems.org'

Затем объявите драгоценные камни, которые вам нужны, включая номера версий.

gem 'rails', '4.2.6'
gem 'rack',  '>=1.1'
gem 'puma',  '~>3.0'

Большинство спецификаторов версии, например> = 1.0, не требуют пояснений. Спецификатор ~> имеет особое значение. ~> 2.0.3 идентичен> = 2.0.3 и <2.1. ~> 2.1 совпадает с> = 2.1 и <3.0. ~> 2.2.beta будет соответствовать предварительным версиям типа 2.2.b.12.

Репозитории Git также являются достоверными источниками драгоценных камней, если репо содержит один или несколько действующих драгоценных камней. Укажите, что проверить :tag :branch или :ref . По умолчанию используется master ветвь.

gem 'nokogiri', :git => 'https://github.com/sparklemotion/nokogiri', :branch => 'master'

Если вы хотите использовать распакованный камень непосредственно из файловой системы, просто установите путь: путь к пути, содержащему файлы gem.

gem 'extracted_library', :path => './vendor/extracted_library'

Зависимости могут быть помещены в группы. Группы могут быть проигнорированы во время установки (с использованием - без --without ) или требуются все сразу (с использованием Bundler.require ).

gem 'rails_12factor', group: :production

group :development, :test do
  gem 'byebug'
  gem 'web-console', '~> 2.0'
  gem 'spring'
  gem 'dotenv-rails'
end

Вы можете указать требуемую версию Ruby в Gemfile с ruby . Если Gemfile загружается в другую версию Ruby, Bundler будет вызывать исключение с объяснением.

ruby '2.3.1'

Gemsets

Если вы используете RVM(Ruby Version Manager) то использовать gemset для каждого проекта - хорошая идея. gemset - это просто контейнер, который вы можете использовать, чтобы держать драгоценные камни отдельно друг от друга. Создание gemset каждого проекта позволяет вам изменять драгоценные камни (и версии gem) для одного проекта, не нарушая всех ваших других проектов. Каждый проект должен только беспокоиться о своих драгоценных камнях.

RVM обеспечивает (> = 0.1.8) @global gemset для рубинового интерпретатора. Драгоценные камни, которые вы устанавливаете в @global gemset для данного рубина, доступны для всех других гемзет, созданных вами в сочетании с этим рубином. Это хороший способ разрешить всем вашим проектам использовать один и тот же установленный жемчуг для конкретной установки интерпретатора Ruby.

Создание гемзет

Предположим, что у вас уже установлен ruby-2.3.1 и вы выбрали его с помощью этой команды:

rvm use ruby-2.3.1

Теперь, чтобы создать gemset для этой рубиновой версии:

rvm gemset create new_gemset

где new_gemset - это имя gemset. Чтобы просмотреть список доступных gemset для рубиновой версии:

rvm gemset list

для перечисления драгоценных камней всех рубиновых версий:

rvm gemset list_all

использовать gemset из списка (предположим, что new_gemset - это gemset, который я хочу использовать):

rvm gemset use new_gemset

вы также можете указать версию ruby ​​с помощью gemset, если вы хотите перейти на другую версию ruby:

rvm use ruby-2.1.1@new_gemset

для указания gemset по умолчанию для конкретной версии Ruby:

rvm use 2.1.1@new_gemset --default

чтобы удалить все установленные драгоценные камни из gemset, вы можете его удалить:

rvm gemset empty new_gemset

чтобы скопировать гемсет из одного рубина в другой, вы можете сделать это:

rvm gemset copy 2.1.1@rails4 2.1.2@rails4

для удаления gemset:

rvm gemset delete new_gemset

для просмотра текущего имени gemset:

rvm gemset name

установить жемчужину в глобальном gemset:

rvm @global do gem install ...

Инициализация Gemsets во время установки Ruby

Когда вы устанавливаете новый рубин, RVM не только создает два gemset (по умолчанию, пустой gemset и глобальный gemset), он также использует набор редактируемых пользователем файлов, чтобы определить, какие камни для установки.

Работа в ~/.rvm/gemsets , rvm-поиск для global.gems и default.gems с использованием дерева-иерархии на основе установленной рубиновой строки. Используя пример ree-1.8.7-p2010.02 , rvm проверит (и импортирует из) следующие файлы:

~/.rvm/gemsets/ree/1.8.7/p2010.02/global.gems
~/.rvm/gemsets/ree/1.8.7/p2010.02/default.gems
~/.rvm/gemsets/ree/1.8.7/global.gems
~/.rvm/gemsets/ree/1.8.7/default.gems
~/.rvm/gemsets/ree/global.gems
~/.rvm/gemsets/ree/default.gems
~/.rvm/gemsets/global.gems
~/.rvm/gemsets/default.gems

Например, если вы отредактировали ~/.rvm/gemsets/global.gems , добавив эти две строки:

bundler
awesome_print

каждый раз, когда вы устанавливаете новый рубин, эти два драгоценных камня устанавливаются в ваш глобальный гемсет. default.gems и файлы global.gems обычно перезаписываются во время обновления rvm.



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