Ответы:
Если вы используете bundler, вам нужно добавить что-то вроде этого в ваш Gemfile:
gem 'redcarpet', :git => 'git://github.com/tanoku/redcarpet.git'
И в случае, если есть .gemspec
файл, он должен быть в состоянии получить и установить гем при запуске bundle install
.
UPD. Как указано в комментариях, для правильной работы Bundler вам также необходимо добавить следующее config.ru
:
require "bundler"
Bundler.setup(:default)
gem 'redcarpet', :git => 'git://github.com/tanoku/redcarpet.git', :branch => 'yourbranch'
gem 'redcarpet', github: 'tanoku/redcarpet'
. akash.im/2012/06/05/bundler-new-github-option.html
gem 'redcarpet', :git => 'git://github.com/tanoku/redcarpet.git', :tag => 'v2.3.5'
<- :tag => ''
часть
хорошо, это зависит от проекта. Некоторые проекты имеют файл * .gemspec в своем корневом каталоге. В этом случае это будет
gem build GEMNAME.gemspec
gem install gemname-version.gem
Другие проекты имеют задачу rake, называемую «gem» или «build» или что-то в этом роде, в этом случае вам нужно вызвать «rake», но это зависит от проекта.
В обоих случаях вам нужно скачать исходный код.
gemname-version.gem
Файл создается при вызовеgem build
gem install gemname-version.gem
команда устанавливает git gem локально? Я не могу найти нигде в своей локальной машине драгоценный камень двигателя, установленный таким образом. Где упаковщик скрывает это?
gem install gemname-version.gem
линия должна бытьgem install --local gemname-version.gem
gem which gemname
должен сказать вам, где конкретный драгоценный камень, это не работает для вас?
Попробуйте gem specific_install, который позволяет вам установить gem из его репозитория github (например, 'edge') или из произвольного URL. Очень полезно для разветвления драгоценных камней и взлома их на нескольких машинах и тому подобное.
gem install specific_install
gem specific_install -l <url to a github gem>
например
gem specific_install https://github.com/githubsvnclone/rdoc.git
specific_install
жемчужине?
ERROR: While executing gem ... (NoMethodError) undefined method 'build' for Gem::Package:Module
Звучит очень круто, но я не буду вдаваться в подробности. Просто хотел опубликовать, что это не сработало для меня на случай, если кто-то еще собирается сделать это, основываясь на рекомендациях SO.
Bundler позволяет использовать гемы непосредственно из репозиториев git. В вашем Gemfile:
# Use the http(s), ssh, or git protocol
gem 'foo', git: 'https://github.com/dideler/foo.git'
gem 'foo', git: 'git@github.com:dideler/foo.git'
gem 'foo', git: 'git://github.com/dideler/foo.git'
# Specify a tag, ref, or branch to use
gem 'foo', git: 'git@github.com:dideler/foo.git', tag: 'v2.1.0'
gem 'foo', git: 'git@github.com:dideler/foo.git', ref: '4aded'
gem 'foo', git: 'git@github.com:dideler/foo.git', branch: 'development'
# Shorthand for public repos on GitHub (supports all the :git options)
gem 'foo', github: 'dideler/foo'
Для получения дополнительной информации см. Https://bundler.io/v2.0/guides/git.html.
bundle
такие git-gem-зависимости будут устанавливаться не глобально, а в домашнем каталоге текущего пользователя. Пассажир будет запускать ruby как пользователь вашего веб-сервера (например www-data
), у которого нет доступа к этому каталогу, и поэтому этот «git-gem» не будет загружен. Вы получите ошибку ... is not yet checked out. Run bundle install first
.
OBSOLETE (см. Комментарии)
Если проект от github и содержится в списке на http://gems.github.com/list.html , то вы можете просто добавить репозиторий github к источникам gems, чтобы установить его:
$ gem sources -a http://gems.github.com
$ sudo gem install username-projectname
Если вы получаете свои драгоценные камни из общедоступного репозитория GitHub, вы можете использовать сокращение
gem 'nokogiri', github: 'tenderlove/nokogiri'
Также вы можете сделать gem install username-projectname -s http://gems.github.com
В вашем Gemfile добавьте следующее:
gem 'example', :git => 'git://github.com/example.git'
Вы также можете добавить ссылки, параметры ветки и теги,
Например, если вы хотите скачать из определенной ветки:
gem 'example', :git => "git://github.com/example.git", :branch => "my-branch"
Затем запустите:
bundle install
Если вы устанавливаете с использованием bundler в соответствии с предложением gryzzly, а гем создает двоичный файл, убедитесь, что вы запускаете его, bundle exec mygembinary
поскольку гем хранится в каталоге компоновщика, который не виден в обычном пути к гему.
На новую Linux-машину вам также нужно установить git
. Bundle использует это за кулисами.
require "bundler" Bundler.setup(:default)
Более подробную информацию смотрите в документах на комплектующие