Bundler — это система управления зависимостями, которая стала стандартом в Ruby-экосистеме. Вот детальное описание всего процесса работы с Bundler.
Создаем Gemfile (если его нет):
bundle init
Эта команда создаст базовый Gemfile:
# frozen_string_literal: true
source "https://rubygems.org"
Редактируем Gemfile, добавляя необходимые гемы:
gem 'rails', '```> 6.1.0'
gem 'pg'
gem 'puma', '>= 5.0'
group :development, :test do
gem 'rspec-rails'
gem 'factory_bot_rails'
end
>= 5.0
— версия 5.0 или вышеВыполняем команду:
bundle install
Gemfile.lock — это "снимок" всех версий зависимостей. Пример:
GEM
remote: https://rubygems.org/
specs:
rails (6.1.4.1)
actioncable (= 6.1.4.1)
actionmailbox (= 6.1.4.1)
# ... другие зависимости rails
pg (1.2.3)
Важно: Gemfile.lock нужно коммитить в репозиторий!
Используем bundle exec
для запуска в контексте bundle:
bundle exec rails server
Или можно предварительно загрузить все зависимости:
require 'bundler/setup'
Bundler.require(:default)
bundle outdated
bundle update --conservative rails
bundle update
Bundler поддерживает группы:
group :development do
gem 'rubocop'
gem 'annotate'
end
group :test do
gem 'rspec'
gem 'capybara'
end
Можно устанавливать только определенные группы:
bundle install --without production
gem 'my_gem', path: '```/projects/my_gem'
gem 'rails', git: 'https://github.com/rails/rails.git', branch: 'main'
gem 'nokogiri', platforms: [:mri, :x64_mingw]
При возникновении конфликтов версий Bundler:
bundle binstubs rails
bin/rails server
Резюмируем: Bundler предоставляет мощный и гибкий инструментарий для управления зависимостями в Ruby-проектах, начиная от простой установки гемов до сложных сценариев с локальными зависимостями и специфичными окружениями. Правильное использование Bundler критически важно для поддержания стабильности и воспроизводимости Ruby-приложений.