Установите gem из разветвленного git - похоже, он установлен нормально, но его нет в списке gem, и я не могу этого требовать - PullRequest
4 голосов
/ 22 октября 2011

Извините, если это дубликат, я видел пару вопросов о компоновщике и git, но не совсем понял.

Я раздвоил гем, находящийся на github - мой форк https://github.com/toastkid/contentapi-ruby

В моем Gemfile я изменил строку gem для использования опции: git, указывая на мой новый форк:

gem "guardian-content", :git => "git://github.com/toastkid/contentapi-ruby.git"

Затем я сделал

bundle update guardian-content, и там сказано:

Using guardian-content (0.2.2) from git://github.com/toastkid/contentapi-ruby.git (at master)

Я думал, что это значит, что теперь у меня будет установлен драгоценный камень, но я не знаю: его нет в gem list,и я не могу требовать гем в консоли ruby.

Я читал, что github больше не делает хостинг гемов.Я не на 100% понимаю, что это на самом деле означает (хостинг гемов, а не хостинг исходного кода для гемов?).Итак, я клонировал свою вилку на свою машину и построил ее там.Затем я изменил строку в Gemfile, чтобы она указывала на локальную папку, содержащую файл gemspec:

gem "guardian-content", :path => './gems/contentapi-ruby'

Затем я сделал

bundle update guardian-content

снова, и на этот раз он сказал:

Using guardian-content (0.2.2) from source at ./gems/contentapi-ruby

Все еще нет драгоценного камня содержания в gem list, по-прежнему не может требовать его.

Кто-нибудь может меня поправить?Как я могу использовать свой разветвленный (идеальный) или локально построенный (при необходимости) gem in bundle install?Я собираюсь развернуть это на моем сервере, поэтому мне нужно, чтобы он работал надежно.

спасибо, макс.

1 Ответ

3 голосов
/ 07 мая 2012

Использование гемов из git (или из локальной файловой системы с: path) в Bundler не устанавливает их в GEM_HOME, поэтому они не доступны для RubyGems обычным способом, но делают их доступными для Bundler какПока они находятся в Gemfile.

Если вы хотите включить гем в irb, убедитесь, что Gemfile и Gemfile.lock находятся в текущем каталоге и (в irb) сделайте следующее:

require `bundler/setup'
require 'guardian-content'

В зависимости от вашей версии Ruby / RubyGems (и вашего $ RUBYOPT) вам может потребоваться require 'rubygems' перед вами require 'bundler/setup'

...