Як встановити gem з джерела GitHub?


451

Я хотів би встановити gem з останнього джерела GitHub.

Як це зробити?

Відповіді:


332

Якщо ви використовуєте пакет, ви повинні додати щось подібне до свого Gemfile:

gem 'redcarpet', :git => 'git://github.com/tanoku/redcarpet.git'

І якщо .gemspecфайл є , він повинен мати можливість отримати та встановити дорогоцінний камінь під час запуску bundle install.

UPD. Як зазначено в коментарях, щоб Bundler працював належним чином, вам також потрібно додати наступне config.ru:

require "bundler" 
Bundler.setup(:default)

9
Я також необхідно додати наступне (додав до мого config.ru): require "bundler" Bundler.setup(:default)Див Bundler документи для отримання більш докладної інформації
Louis Сейерс

40
Додатково можна вказати параметри ref, гілки або тегів, наприкладgem 'redcarpet', :git => 'git://github.com/tanoku/redcarpet.git', :branch => 'yourbranch'
Amit Patel

25
є також: gem 'redcarpet', github: 'tanoku/redcarpet'. akash.im/2012/06/05/bundler-new-github-option.html
Андрій

@AmitPatel Дякую тобі так багато !!! : branch => 'your Branch', ваш цей рядок вирішив для мене зараз велику проблему. Стільки вдячного тобі
КМ Ракібул Іслам

3
@gaussblurinc gem 'redcarpet', :git => 'git://github.com/tanoku/redcarpet.git', :tag => 'v2.3.5'<- :tag => ''частина
Міша Рейзлін

400

добре, це залежить від проекту, про який йде мова. Деякі проекти мають у своєму кореневому каталозі файл * .gemspec. У такому випадку це було б

gem build GEMNAME.gemspec
gem install gemname-version.gem

Інші проекти мають завдання граблі, яке називається "gem" або "build" або щось подібне, у цьому випадку вам потрібно посилатися на "grake", але це залежить від проекту.

В обох випадках потрібно завантажити джерело.


2
Спасибі - ідеальна відповідь.
Джон Шонінг

20
Просто порада, щоб люди могли знати, що це насправді відбувається. gemname-version.gemФайл створюється при викликуgem build
Очікування Dev ...

Де gem install gemname-version.gemкоманда встановлює git gem локально? Я не можу знайти ніде на своїй локальній машині дорогоцінний камінь, встановлений таким чином. Де його приховує пачка?
Зелений

2
Я думаю, що gem install gemname-version.gemлінія повинна бутиgem install --local gemname-version.gem
JonB

@Green - gem which gemnameповинен сказати вам, де знаходиться конкретний дорогоцінний камінь, чи це не працює для вас?
саме

255

Спробуйте specific_install дорогоцінний камінь, який дозволяє вам встановити дорогоцінний камінь зі свого сховища 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 

3
Ви можете додати більше пояснень щодо specific_installдорогоцінного каміння?
microspino

1
Це саме те, що я шукав, схоже на підтримку піт-піту Python. gem specific_install -l <url для проекту на github> працював як шарм!
Мерф

1
ERROR: While executing gem ... (NoMethodError) undefined method 'build' for Gem::Package:Module Звучить дуже круто, але я більше не буду в ньому дивитися. Просто хотів додати, що це не спрацювало для мене на випадок, якщо хтось збирається дати йому кружляння на основі рекомендації ТА.
ізоморфізм

1
@isomorphismes +1 до вашого коментаря. Я створив окреме питання про цю помилку тут: stackoverflow.com/questions/27045874 / ...
La-comadreja

1
Це рятівник! Дякую вам сер.
Нолдорін

34

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


Мабуть, найкраща відповідь
Антон Семениченко

Зауважте, що у вас можуть виникнути проблеми, якщо ви використовуєте такий підхід із пасажиром та apache / ngix. Під час запуску bundleтакі git-gem-залежності не встановлюватимуться глобально, а замість цього в домашньому каталозі поточного користувача. Пасажир буде запускати рубін як користувач вашого веб-сервера (наприклад www-data), який не має доступу до цього каталогу, і цей "git-gem" не завантажується. Ви отримаєте помилку ... is not yet checked out. Run bundle install first.
ялинка

16

ЗАБАВЛЕННЯ (див. Коментарі)

Якщо проект з github і міститься у списку на http://gems.github.com/list.html , тоді ви можете просто додати github repo до джерел дорогоцінних каменів, щоб встановити його:

$ gem sources -a http://gems.github.com
$ sudo gem install username-projectname

1
o rly? я тільки що зробив це, і це DID працює ... перейдіть на gems.github.com, перш ніж додати його до джерел yr я думаю? (але не використовуйте
судо

7
@esharp, вони розміщують ті, що побудували, але вже не будують їх. Якщо дорогоцінний камінь оновився з 2009 року , копія gems.github.com буде застарілою.
Тобу

13

Якщо ви отримуєте ваші дорогоцінні камені із загальнодоступного сховища GitHub, ви можете скористатися скороченням

gem 'nokogiri', github: 'tenderlove/nokogiri'

4

Також ви можете зробити gem install username-projectname -s http://gems.github.com


6
Застарілий, дивіться коментарі інших відповідей.
Лі Гемблі

1
Все-таки мені допомогли проблему зі старою базою коду. Так, його 2013 рік, і я працюю над проектом 2.3.4.
Вівек Сампара

4

Додайте у свій Gemfile наступне:

gem 'example', :git => 'git://github.com/example.git'

Ви також можете додати параметри ref, гілки та тегів,

Наприклад, якщо ви хочете завантажити з певної гілки:

gem 'example', :git => "git://github.com/example.git", :branch => "my-branch"

Потім запустіть:

bundle install

3

Якщо ви встановите за допомогою bundler, як це запропоновано gryzzly, і дорогоцінний камінь створює двійковий файл, тоді переконайтеся, що ви запускаєте його, bundle exec mygembinaryоскільки дорогоцінний камінь зберігається в каталозі постачальників, який не видно на звичайному шляху до дорогоцінного каменю.


2

На новій машині Linux вам також потрібно встановити git. Пакет використовує це за кадром.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.