rubygems / добавить зависимость времени выполнения только для теста (или любой заданной среды) - PullRequest
0 голосов
/ 21 апреля 2019

В настоящее время работает над гемом, который расширяет спецификационные функции (для этого требуется factory_bot), как определить его в add_runtime_dependency только для соответствующей группы (здесь :test)?

Или, лучше ли разрешать поднимать драгоценный камень, если соответствующая зависимость не добавлена ​​пользователем в его проекте?

1 Ответ

1 голос
/ 21 апреля 2019

Если ваш гем имеет зависимость во время выполнения, он должен быть указан в гемспецификации как что позволяет 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). Используйте это.

...