Gem и bundler: добавление зависимости разработки с относительным путем - PullRequest
18 голосов
/ 12 июня 2011

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

s.add_dependency "mygem-core"

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

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

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

s.add_development_dependency "mygem-runtime"

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

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

Тогда я получаю сообщение об ошибке при запуске bundle:

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 

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

Ответы [ 2 ]

9 голосов
/ 05 августа 2011

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

# Gemfile
source :rubygems
gemspec

gem "mygem-runtime", :path => '../mygem-runtime', :group => :development
1 голос
/ 16 января 2014

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

...