GitHub kaynağından gem nasıl kurulur?


451

Gem'i en son GitHub kaynağından yüklemek istiyorum.

Bunu nasıl yaparım?

Yanıtlar:


332

Bundler kullanıyorsanız, Gemfile'ınıza böyle bir şey eklemeniz gerekir:

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

Ve .gemspecdosya varsa, çalıştırırken taşı getirmeli ve kurabilmelidir bundle install.

UPD. Yorumlarda belirtildiği gibi, Bundler'ın düzgün çalışması için aşağıdakileri de eklemeniz gerekir config.ru:

require "bundler" 
Bundler.setup(:default)

9
Aşağıdakileri de eklemem gerekiyordu (config.ru dosyasına eklendi): require "bundler" Bundler.setup(:default)Daha fazla ayrıntı için paket belgelerine bakın
Louis Sayers

40
Ek olarak, örneğin ref, şube veya etiket seçeneklerini belirtebilirsinizgem 'redcarpet', :git => 'git://github.com/tanoku/redcarpet.git', :branch => 'yourbranch'
Amit Patel

25
de var: gem 'redcarpet', github: 'tanoku/redcarpet'. akash.im/2012/06/05/bundler-new-github-option.html
Andrew

@AmitPatel Çok teşekkür ederim !!! : branch => 'yourbranch', bu çizginiz şu an benim için büyük bir sorunu çözdü. Sana çok minnettarım.
KM Rakibul Islam

3
@gaussblurinc gem 'redcarpet', :git => 'git://github.com/tanoku/redcarpet.git', :tag => 'v2.3.5'<- :tag => ''bölüm
Misha Reyzlin

400

bu söz konusu projeye bağlı. Bazı projelerin kök dizinlerinde * .gemspec dosyası vardır. Bu durumda,

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

Diğer projelerin "gem" veya "build" olarak adlandırılan bir komisyon görevi vardır, bu durumda "komisyon" u çağırmanız gerekir, ancak bu projeye bağlıdır.

Her iki durumda da kaynağı indirmeniz gerekir.


2
Teşekkürler - mükemmel cevap.
Jon Schoning

20
İnsanlara gerçekte ne olduğunu bildirmek için bir ipucu. gemname-version.gemBaþlatýrken dosya oluşturulurgem build
... Dev bekliyorum

gem install gemname-version.gemKomut git gem'i yerel olarak nereye kurar? Yerel makinemin herhangi bir yerinde bu şekilde yüklü bir motor mücevher bulamıyorum. Bundler onu nerede saklıyor?
Yeşil

2
Sanırım gem install gemname-version.gemçizgi olmalıgem install --local gemname-version.gem
JonB

@Yeşil - gem which gemnameBelirli bir mücevher nerede olduğunu söylemeliyim, bu sizin için çalışmıyor mu?
sameers

255

Github deposundan ('edge' gibi) veya keyfi bir URL'den bir mücevher yüklemenize izin veren spesifik_kurulum taşını deneyin . Taşları çatallamak ve birden fazla makinede ve benzeri bilgisayarlarda kesmek için çok yararlıdır.

gem install specific_install
gem specific_install -l <url to a github gem>

Örneğin

gem specific_install https://github.com/githubsvnclone/rdoc.git 

3
specific_installgem hakkında daha fazla açıklama ekleyebilir misiniz ?
microspino

1
Python'un pip git desteğine benzer şekilde tam da aradığım şey buydu. gem özgü_kurulum -l <github proje için url> bir cazibe gibi çalıştı!
Murph

1
ERROR: While executing gem ... (NoMethodError) undefined method 'build' for Gem::Package:Module Kulağa çok hoş geliyor ama daha fazla bakmayacağım. Sadece başka biri SO tavsiye dayalı bir koşuşturma vermek üzereyse benim için işe yaramadı göndermek istedim.
izomorfizmalar

1
@isomorphismes +1 yorumunuz için. Burada bu hata hakkında ayrı bir soru oluşturdum: stackoverflow.com/questions/27045874/…
La-comadreja

1
Bu bir cankurtaran! Teşekkürler bayım.
Noldorin

34

Bundler , taşları doğrudan git depolarından kullanmanızı sağlar. Gemfile dosyasında:

# 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'

Daha fazla bilgi için bkz. Https://bundler.io/v2.0/guides/git.html


muhtemelen en iyi cevap
Anton Semenichenko

Bu yaklaşımı yolcu ve apache / ngix ile kullanırsanız sorun yaşayabileceğinizi lütfen unutmayın. Çalışırken bundle, bu git-gem- bağımlılıkları genel olarak değil, geçerli kullanıcının ana dizinine yüklenir. Yolcu, web sunucunuzun www-databu dizine erişimi olmayan kullanıcısı (örn. ) Olarak ruby ​​çalıştırır ve bu nedenle bu "git-gem" yüklenmez. Bir hata alırsınız ... is not yet checked out. Run bundle install first.
balık kılçığı

16

OBSOLETE (yorumlara bakın)

Proje github'dan geliyorsa ve http://gems.github.com/list.html adresindeki listede yer alıyorsa, yüklemek için gemsub repo'yu taşlar kaynaklarına ekleyebilirsiniz:

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

1
ya? i şimdi bunu yaptı ve işe yaradı ... sanırım yr kaynaklarına eklemeden önce gems.github.com gidin? (ama sudo kullanmayın)
esharp

7
@esharp, inşa ettiklerini barındırıyorlar ama artık inşa etmiyorlar. Mücevher 2009'dan beri güncellenirse , bir gems.github.com kopyası geçersiz olacaktır.
Tobu

13

Mücevherlerinizi halka açık bir GitHub deposundan alıyorsanız, stenografı kullanabilirsiniz.

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

4

Ayrıca yapabilirsin gem install username-projectname -s http://gems.github.com


6
Eski, diğer cevapların yorumlarına bakın.
Lee Hambley

1
Hala eski bir kod tabanı ile ilgili bir sorun için bana yardımcı oldu. Evet 2013 ve ben bir raylar 2.3.4 proje üzerinde çalışıyorum.
Vivek Sampara

4

Gemfile'ınıza aşağıdakileri ekleyin:

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

Ayrıca ref, şube ve etiket seçenekleri ekleyebilir,

Örneğin, belirli bir şubeden indirmek istiyorsanız:

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

O zaman koş:

bundle install

3

Gryzzly tarafından önerildiği gibi bundler kullanarak yüklerseniz ve gem bir ikili dosya oluşturursa bundle exec mygembinary, gem normal gem yolunda görünmeyen bir bundler dizininde depolandığından, onu çalıştırdığınızdan emin olun .


2

Yeni bir Linux makinesinde de yüklemeniz gerekir git. Bundle onu perde arkasında kullanır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.