Иногда при написании скрипта Ruby нам нужно использовать внешние гемы для интеграции со сторонним API или для облегчения подключения к базе данных.
Например, если кто-то может захотеть добавить окраску для создания сообщений
require 'rainbow'
puts Rainbow("My very important message in red").red
Но как при развертывании этого скрипта обеспечить наличие этих зависимостей? И будут ли они установлены в ожидаемых версиях, для которых тестировался наш скрипт?
Что делать тогда? Создание гема кажется слишком тяжелым для нашего скрипта, и не рекомендуется ожидать, что пользователи сами сделают установку (для гема это нормально, но для скрипта, который начал бы иметь 4-5, это много).
К счастью, у нас есть Bundler, действительно, установщик предлагает модуль, который мы можем включить в наш скрипт и который предлагает все функции файла. Gem-файлы но определить наши драгоценные камни внутри скрипта.
require 'bundler/inline'
gemfile do
source '
gem 'rainbow', '~> 3.0.0'
end
puts Rainbow("My very important message in red").red
Таким образом, когда скрипт Bundler запускается, он проверяет, установлены ли заявленные драгоценные камни, при необходимости переходит к загрузке, и, наконец, они будут автоматически загружены для использования.