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

Как я могу использовать правило "gemspec" в Bundler, сохраняя при этом местную проверку драгоценного камня?

Сценарий: Я разрабатываю драгоценный камень 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

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

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

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

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

4b9b3361

Ответ 1

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

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

Update:

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

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

Ура!

Ответ 2

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

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

Ответ 3

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