Как я могу использовать правило "gemspec" в Bundler, в то же время используя локальную проверку гема? - PullRequest
19 голосов
/ 14 декабря 2010

Сценарий: я разрабатываю камень gem-foo, используя Bundler.У меня есть зависимость от gem-bar, которую я проверил локально для разработки.Я могу объявить эту зависимость в Gemfile как:

gem "gem-bar", :path => "/path/to/local/gem-bar"

Однако при разработке драгоценного камня «наилучшей практикой» является определение необходимых драгоценных камней в gem-foo.gemspec через:

s.add_runtime_dependency 'gem-bar'

, а затем просто включите зависимости в Gemfile, используя:

gemspec

Что я хотел бы сделать, это добавить зависимость времени выполнения для гема в gemspec, но сделать некоторыелокальные изменения gem-bar и bundle install, использующие локальную проверку разработки.Предположим случай, когда я контролирую оба драгоценных камня и одновременно взламываю их, и я буду загружать новые версии одновременно.Я мог бы просто закомментировать s.add_runtime_dependency в gemspec и добавить его с локальным путем в Gemfile, но это кажется ... подверженным ошибкам?Gemspec должен всегда объявлять эту зависимость, и Gemfile должен иметь возможность переопределять местоположение, которое Bundler должен использовать для этого драгоценного камня.Однако, если вы действительно сделаете это, вы получите следующую ошибку:

Нельзя указывать один и тот же драгоценный камень дважды из разных источников.Вы указали, что gem-bar (> = 0) должен исходить из неопределенного источника и источника в / path / to / local / gem-bar

В идеале, я бы просто имел какой-то локальныйпереопределить, так как мне никогда не нужен случай, когда я случайно толкаю камень с требованием локального gem-bar на определенном пути.Это было бы глупо.

У кого-нибудь есть хорошее решение для этого варианта использования?

Ответы [ 3 ]

15 голосов
/ 16 декабря 2010

Несколько человек обнаружили эту проблему, Иегуда Кац сказал, что он с радостью примет патч: http://groups.google.com/group/ruby-bundler/browse_thread/thread/d4215c4930a63ffc?pli=1

Как лучший обходной путь, закомментируйте строку gemspec в вашем gemfile и испытайте некоторое дублирование?

Обновление:

Похоже, вам не нужно ждать - https://github.com/carlhuda/bundler/commit/03378109d

Сообщение коммита: Msgstr "Сделать возможным переопределить источник зависимости .gemspec в Gemfile"

ура!

2 голосов
/ 21 декабря 2010

Пока что я сделал, чтобы отключить требования к гемам в gemspec, когда задана заданная переменная среды, затем в Gemfile добавить определение гема, которое указывает на мою локальную файловую систему.

Я написал обо всем моем рабочем процессе здесь: http://numbers.brighterplanet.com/2010/07/28/bundler-to-the-max/ Примечание: я также использую ювелир, который сильно усложняет вещи.

1 голос
/ 12 ноября 2014

Boy! Я никогда не добираюсь до них вовремя, не так ли? Попробуйте варианты Bundler, такие как - что-то вендор, я не могу вспомнить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...