Подтвердить что ты не робот

Gem и bundler: добавление зависимости развития с относительным путем

Я помогаю в разработке серии взаимосвязанных драгоценных камней. Поэтому я не хочу, чтобы у них была жесткая зависимость друг от друга, но я do хочу, чтобы они запускали тесты в разработке, которые используют друг друга. Просто так? Просто используйте add_development_dependency в gemspec, правильно? Ну, есть одна маленькая морщина - репозиторий git содержит все драгоценные камни, и поэтому я хочу, чтобы Gemfile указывал на локальную копию драгоценного камня. Это работает с жесткой зависимостью. В gemspec у меня есть эта строка для моей жесткой зависимости:

s.add_dependency "mygem-core"

И затем в Gemfile у меня есть эта строка:

gem "mygem-core", :path => "../mygem-core"

Это работает PERFECT. Зависимость существует, когда я выталкиваю этот пакет, и когда я тестирую, он будет использовать локальную копию mygem-core. Проблема в том, что когда я помещаю ЭТО в gemspec:

s.add_development_dependency "mygem-runtime"

И затем это в Gemfile:

gem "mygem-runtime", :path => "../mygem-runtime"

Затем я получаю сообщение об ошибке при запуске пакета:

You cannot specify the same gem twice coming from different sources. You specified that mygem-packager (>= 0) should come from source at ../mygem-packager and 

Да, это не опечатка в конце. В конце буквально пустое пустое место для второго "места". Есть ли разумные способы обойти это? Я хочу добавить это как зависимость от разработки и использовать локальный источник. Что мне не хватает?

4b9b3361

Ответ 1

Вероятно, лучше оставить этот камень из манифеста .gemspec и поместить его в Gemfile в группе: development.

# Gemfile
source :rubygems
gemspec

gem "mygem-runtime", :path => '../mygem-runtime', :group => :development

Ответ 2

Если вы используете Gemfile для указания локального пути к камню, вам нужно будет удалить его из gemspec. Bundler проанализирует gemspec и добавит зависимости, которые устанавливает этот комплектщик, поэтому его, как драгоценный камень, указываются дважды.