Как включить файл .gem в компоновщик (не исходный код) - PullRequest
1 голос
/ 01 февраля 2011

У меня есть приложение rails, которое зависит от библиотеки, которую я разрабатываю одновременно.

При развертывании приложения у меня нет возможности использовать опцию: git => '' в компоновщике для загрузки в гем по разным причинам. В идеале я хочу сделать следующее:

Gemfile

gem 'system-api', :gem => 'vendor/system-api-1.0.0.gem'

Я хочу предварительно собрать гем, просто включить его в проект и проверить его в git.

Есть ли способ сделать это с помощью bundler или даже без использования bundler?

[ОБНОВЛЕНИЕ 1]

Я попробовал "gem" system-api, '1.0.0',: path => 'vendor /' ", и bundler говорит, что он установлен правильно, но гем не отображается в списке гемов и не отображается проект рельсов имеет ссылку на него. Показывается командой 'bundle show'.

Ответы [ 4 ]

0 голосов
/ 17 августа 2012

Я сделал следующее, что работает:

gem 'libv8', '3.11.8.3mytest', :path => '../libv8/pkg'

А папка ../libv8/pkg содержит только двоичный пакет gem libv8-3.11.8.3mytest-x86_64-linux.gem.

Надеюсь, это поможет.

0 голосов
/ 29 июня 2011

МОЖЕТ работать, если вы поместите файл X.gem в ./vendor/cache

Если вы запустите «пакетный пакет», то именно там пакет будет помещать встроенные файлы .gem. Так что, если вы положите его туда сам, найдет ли его там упаковщик? Может быть. Но я не уверен в идее упаковывать некоторые гемы в ./vendor/cache, а другие нет, не совсем уверен, поддерживает ли это Bundler, так как я думаю, что «bundle package» настаивает на том, чтобы поместить туда все.

http://gembundler.com/bundle_package.html http://gembundler.com/man/bundle-package.1.html

Если вместо того, чтобы проверять предварительно встроенный X.gem в репозиторий, вы можете проверить SOURCE для X gem в репозитории, а источник включает файл X.gemspec, ТО, затем вы можете использовать опцию: path. Но я думаю, что, как вы обнаружили, опция: path предполагает указывать на источник, а не на пакет * .gem. Возможно, что если вы просто разархивируете * .gem, это приведет к появлению каталога, с которым вы сможете использовать bundler gem: path. (Продукт * .gem - это просто zipfile ... я думаю.)

Не окончательный ответ, но, возможно, некоторые идеи для изучения.

0 голосов
/ 14 октября 2011

Я бы сказал, что это нормально gem list не показывает ваш драгоценный камень.Вы установили его через bundler, и вы не вызываете bundler при запуске gem list.Вместо этого проверьте с bundler exec gem list.

Кстати, при использовании Bundler вы всегда должны использовать bundler exec перед любой командной строкой, которую вы запускаете (за исключением rails server, у которого есть свой способ получить Bundlerи работает): man-страница bundle-exec

0 голосов
/ 01 февраля 2011

Похоже, у упаковщика есть опция :path.Он будет работать относительно местоположения проекта Gemfile.Путь указывает только папку, а не фактическое имя гема:

gem 'system-api', :path => "vendor"

См. документы Gemfile для комплектов для дополнительной информации.

...