Bundler
Bundler обеспечивает согласованную среду для проектов Ruby, отслеживая и устанавливая именно те гемы и версии, которые необходимы.
Другими словами, Bundler позволяет организовывать и управлять гемами отдельно для каждого из ваших проектов Ruby. Например, гемы, необходимые для приложения Rails, будут отличаться от гемов для другого приложения. И если несколько проектов используют один и тот же гем, им могут потребоваться разные версии этого гема. Это также значительно упрощает обмен проектом с другими разработчиками.
Без Bundler, если бы над одним проектом работали несколько человек, им пришлось бы координировать установку гемов на своих компьютерах. Каждый раз, когда Иван хотел бы добавить новый гем или обновить существующий до новой версии, ему пришлось бы просить Гарика вручную установить или обновить этот гем. Работа над несколькими проектами, требующими разных версий гемов, была бы кошмаром.
Bundler позволяет хранить гемы из разных проектов отдельно друг от друга с помощью файла Gemfile в каждом проекте, в котором перечислены все гемы, необходимые для этого проекта.
source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
# gem "rails"
Строка git_source указывает Bundler загружать гемы с официального сайта Rubygems, где публикуются гемы для Ruby. Строка git_source предоставляет сокращенный способ указания на гемы на GitHub вместо Rubygems.
Добавляя bundle exec перед любой командой, гарантируется использование конкретной версии гема, определенной в нашем проекте Ruby. Именно поэтому на компьютере может быть установлено несколько версий одного и того же гема, и при этом можно использовать определенные версии в разных проектах, не опасаясь конфликтов.
Больше информации тут - https://bundler.io/docs.html