Архив метки: Gemfile

Главная / Gemfile
2 Поста

В этом небольшом посте мы рассмотрим интеграцию Rails с HTTParty.

Для начала добавляем HTTParty в Gemfile.

Затем выполняем команду bundle install или просто bundle.


(…)

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

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

В этом посте мы рассмотрим Bundler и управление gem’ами внутри вашего Rails-приложения.

Если вы зайдете на bundler.io, вы увидите, что «Bundler обеспечивает согласованную среду для проектов Ruby, отслеживая и устанавливая точные gem’ы и версии, которые необходимы».

Bundler

Bundler позволяет вам указывать gem’ы (и связанные с ними зависимости) для Rails-приложения внутри файла Gemfile (в его корневой директории).

Это наиболее предпочтительный способ управления зависимостями gem’ов в Rails.

Чтобы использовать его, выполните bundle install или просто bundle после указания нового gem’а в Gemfile.

Если вы изменяете версию gem’а, выполните bundle update.

Кроме того, вы можете сказать Rails (опять же, через Gemfile) загружать определенные gem’ы только в определенных окружениях.

К примеру, некоторые gem’ы можно указать только для среды разработки или тестирования.

Какая версия устанавливается

Если вы не указываете ничего, вы получаете последнюю версию.

Вы также можете указать точную или примерную версию.


gem 'rails', '4.2.6' # точная версия
gem 'sqlite3' # последняя версия
gem 'uglifier', '>= 1.3.0' # версия старше (или равная) 1.3.0

Другой пример:


gem 'thin', ">= 1.1", "< 2.0" # не менее 1.1, но менее 2.0
gem 'thin', "~>= 1.1" # то же, что и в примере выше

Подобное значение может указываться, потому что часто при переходе на новую версию gem’ы (и программное обеспечение вообще) могут менять или удалять определенные API.

Во втором варианте этого примера, bundler отбрасывает последнее число и увеличивает первое, чтобы получить верхний лимит номера версии.

Пример Gemfile

Приложение может даже использовать другую версию Rails, если вы меняете версию в Gemfile и выполняете bundle update.


source 'https://rubygems.org'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.6'

Кроме того, Bundler создает файл Gemfile.lock, который содержит фактические версии gem’ов с их зависимостями, которые использует ваше приложение.

bundle exec

Скриншот документации:

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

При выполнении bundle exec rake вы будете точно знать, что выполняется версия из Gemfile.

В итоге

Bundler управляет зависимостями gem’ов.

Он загружает gem’ы при запуске приложения.