#ruby-on-rails #rspec #rubygems
#ruby-on-rails #rspec #rubygems
Вопрос:
В настоящее время работает над gem, который расширяет функциональные возможности спецификации (это требуется factory_bot
), как определить его в add_runtime_dependency только для соответствующей группы (здесь , :test
)?
Или лучше ли разрешать gem поднимать, если пользователь не добавляет соответствующую зависимость в свой проект?
Ответ №1:
Если у вашего gem есть зависимость во время выполнения, она должна быть указана в gemspec, поскольку это позволяет Bundler выполнять разрешение зависимостей, чтобы узнать, совместим ли ваш gem с другими gems в 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
Эти зависимости будут использоваться при разработке / тестировании самого gem, но не «передаются» при установке gem через bundler.
Лучше ли разрешать gem поднимать, если пользователь не добавляет соответствующую зависимость в свой проект?
Нет.В Ruby уже есть хороший распознаватель зависимостей (Bundler). Используйте это.