Ruby Gemspec Dependency: возможно ли иметь зависимость от git-ветки? - PullRequest
77 голосов
/ 28 июня 2011

Возможно ли иметь зависимость от git-ветки внутри mygem.gemspec?

Я думаю о чем-то похожем на следующее:

gem.add_runtime_dependency 'oauth2', :git => 'git@github.com:lgs/oauth2.git'

... но это не работает.

Ответы [ 3 ]

39 голосов
/ 28 июня 2011

Это невозможно и, скорее всего, никогда не произойдет, потому что RubyGems будет довольно жестко позволять разработчикам гемов требовать, чтобы у пользователей была установлена ​​конкретная система контроля версий для доступа к драгоценному камню. Драгоценные камни должны быть автономными с минимальным количеством зависимостей, чтобы люди могли использовать их в максимально широком диапазоне приложений.

Если вы хотите сделать это для своих собственных внутренних проектов, я бы предложил использовать Bundler , который достаточно хорошо это поддерживает.

12 голосов
/ 29 июля 2013

EDIT

По словам комментатора, это больше не так. Предварительная информация сохранена для исторического контекста.

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

Устаревшая информация

Эта статья Иегуды Каца прояснила для меня подобную путаницу. В нем говорится, что для использования только в разработке лучше всего добавить git-материал в gemfile, но этот упаковщик будет по-прежнему использовать информацию о зависимости / версии из gemspec (мне кажется это волшебным, но я доверяю Иегуде).

6 голосов
/ 14 апреля 2015

Я просто пытался разобраться и с этой проблемой.И я только что предложил следующее решение (которое я не уверен, если вы публикуете свой гем или у вас есть права на распространение этого камня oauth2).

В вашем драгоценном камне, который требует камень oauth2, запустите его.

git submodule add git@github.com:lgs/oauth2.git lib/oauth2

Если вам требуется ветвь, отличная от ветви по умолчанию

cd lib/oauth2 && git checkout <branchname_or_ref>
cd .. && git add lib/oauth2
git commit -m "adding outh2 submodule"

В вашей gemspec добавьте это выше вашей строки требуемой версии

$:.push File.expand_path('../lib/oauth2/lib', __FILE__)

Также вам нужно будет добавитьвсе зависимости времени выполнения гема oauth2 от вашей гемспецификации.Я еще не нашел способ обойти это.

Это то, что я сделал, и это работает для нас, потому что наш драгоценный камень требуется через git, поэтому я не уверен, будет ли это работать для опубликованных rubygemsдрагоценный камень.

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