Если ваш гем имеет зависимость во время выполнения, он должен быть указан в гемспецификации как
что позволяет Bundler выполнять разрешение зависимостей, чтобы увидеть, совместим ли ваш драгоценный камень с другими драгоценными камнями в Gemfile.
Конечный пользователь должен поместить ваш драгоценный камень в группу в Gemfile. Если они поместят его в группу :test
, он будет загружен только в тестовой среде. Если они не прочитали файл readme и не поместили его в основную группу, то это не ваша проблема.
Gem::Specification.new do |s|
# ...
s.add_dependency 'factory_bot', version
# ...
end
Обратите внимание, что вы также можете перечислить зависимости разработки в вашем gemspec.
Gem::Specification.new do |s|
# ...
s.add_development_dependency 'rubocop', '~> 0.44.1'
end
Эти зависимости будут использоваться при разработке / тестировании самого гема, но не "передаются" при установке гема через упаковщик.
Лучше ли поднимать камень, если заинтересованный
зависимость не добавлена пользователем в его проекте?
Нет. В Ruby уже есть хороший преобразователь зависимостей (Bundler). Используйте это.