Bagaimana cara menginstal permata dari sumber GitHub?

451

Saya ingin memasang permata dari sumber GitHub terbaru.

Bagaimana saya melakukan ini?

Vojto
sumber

Jawaban:

332

Jika Anda menggunakan bundler, Anda perlu menambahkan sesuatu seperti ini ke Gemfile Anda:

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

Dan jika ada .gemspecfile, itu harus dapat mengambil dan menginstal permata saat dijalankan bundle install.

UPD. Seperti ditunjukkan dalam komentar, agar Bundler berfungsi dengan benar, Anda juga perlu menambahkan yang berikut ini ke config.ru:

require "bundler" 
Bundler.setup(:default)
Misha Reyzlin
sumber
9
Saya juga perlu menambahkan yang berikut (ditambahkan ke config.ru saya): require "bundler" Bundler.setup(:default)Lihat bundler docs untuk lebih jelasnya
Louis Sayers
40
Selain itu, orang dapat menentukan opsi ref, cabang atau tag misalnyagem 'redcarpet', :git => 'git://github.com/tanoku/redcarpet.git', :branch => 'yourbranch'
Amit Patel
25
ada juga: gem 'redcarpet', github: 'tanoku/redcarpet'. akash.im/2012/06/05/bundler-new-github-option.html
Andrew
@AmitPatel Terima kasih banyak !!! : branch => 'yourbranch', baris Anda ini telah memecahkan masalah besar bagi saya sekarang. Terima kasih banyak untukmu.
KM Rakibul Islam
3
@gaussblurinc gem 'redcarpet', :git => 'git://github.com/tanoku/redcarpet.git', :tag => 'v2.3.5'<- :tag => ''bagian
Misha Reyzlin
400

baik, itu tergantung pada proyek yang dimaksud. Beberapa proyek memiliki file * .gemspec di direktori root mereka. Kalau begitu, itu akan terjadi

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

Proyek lain memiliki tugas menyapu, yang disebut "permata" atau "membangun" atau sesuatu seperti itu, dalam hal ini Anda harus memanggil "menyapu", tetapi itu tergantung pada proyek.

Dalam kedua kasus Anda harus mengunduh sumbernya.

Dominik Honnef
sumber
2
Terima kasih - jawaban sempurna.
Jon Schoning
20
Hanya tip agar orang tahu apa yang sebenarnya terjadi. The gemname-version.gemfile yang dibuat saat menjalankangem build
Menunggu Dev ...
Di mana gem install gemname-version.gemperintah menginstal git gem secara lokal? Saya tidak dapat menemukan di mana pun di mesin lokal saya permata mesin diinstal dengan cara ini. Di mana bundler menyembunyikannya?
Green
2
Saya pikir gem install gemname-version.gemgarisnya harusgem install --local gemname-version.gem
JonB
@Green - gem which gemnameharus memberi tahu Anda di mana permata tertentu berada, apakah itu tidak bekerja untuk Anda?
sama
255

Coba permata specific_install itu memungkinkan Anda untuk menginstal permata dari repositori github (seperti 'edge'), atau dari URL sewenang-wenang. Sangat berguna untuk memalsukan permata dan meretasnya di banyak mesin dan semacamnya.

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

misalnya

gem specific_install https://github.com/githubsvnclone/rdoc.git 
Kamek
sumber
3
Bisakah Anda menambahkan lebih banyak penjelasan tentang specific_installpermata?
microspino
1
Ini persis apa yang saya cari, mirip dengan dukungan pip git Python. gem specific_install -l <url untuk memproyeksikan di github> bekerja seperti pesona!
Murph
1
ERROR: While executing gem ... (NoMethodError) undefined method 'build' for Gem::Package:Module Kedengarannya sangat keren tapi saya tidak akan memeriksanya lebih jauh. Hanya ingin memposting yang tidak berfungsi untuk saya jika ada orang lain yang akan memberikannya berdasarkan rekomendasi SO.
isomorfisma
1
@isomorphismes +1 untuk komentar Anda. Saya membuat pertanyaan terpisah tentang kesalahan itu di sini: stackoverflow.com/questions/27045874/…
La-comadreja
1
Ini adalah penyelamat! Terima kasih Pak.
Noldorin
34

Bundler memungkinkan Anda untuk menggunakan permata langsung dari repositori git. Di Gemfile Anda:

# Use the http(s), ssh, or git protocol
gem 'foo', git: 'https://github.com/dideler/foo.git'
gem 'foo', git: '[email protected]:dideler/foo.git'
gem 'foo', git: 'git://github.com/dideler/foo.git'

# Specify a tag, ref, or branch to use
gem 'foo', git: '[email protected]:dideler/foo.git', tag: 'v2.1.0'
gem 'foo', git: '[email protected]:dideler/foo.git', ref: '4aded'
gem 'foo', git: '[email protected]:dideler/foo.git', branch: 'development'

# Shorthand for public repos on GitHub (supports all the :git options)
gem 'foo', github: 'dideler/foo'

Untuk info lebih lanjut, lihat https://bundler.io/v2.0/guides/git.html

Dennis
sumber
mungkin jawaban terbaik
Anton Semenichenko
Harap dicatat bahwa Anda mungkin mendapat masalah jika Anda menggunakan pendekatan ini dengan penumpang dan apache / ngix. Saat dijalankan bundle, dependensi git-gem- tidak akan diinstal secara global tetapi di direktori home pengguna saat ini. Penumpang akan menjalankan ruby ​​sebagai pengguna server web Anda (mis. www-data) Yang tidak memiliki akses ke direktori ini dan karenanya "git-gem" ini tidak akan dimuat. Anda akan mendapatkan kesalahan ... is not yet checked out. Run bundle install first.
Tulang ikan
16

OBSOLETE (lihat komentar)

Jika proyek berasal dari github, dan terkandung dalam daftar di http://gems.github.com/list.html , maka Anda bisa menambahkan repo github ke sumber permata untuk menginstalnya:

$ gem sources -a http://gems.github.com
$ sudo gem install username-projectname
Michael Pereira
sumber
1
ya? saya baru saja melakukan ini dan itu TIDAK berfungsi ... pergi ke gems.github.com sebelum menambahkannya ke sumber saya kira? (tapi jangan gunakan sudo)
esharp
7
@ sharp, mereka meng-host yang mereka buat, tetapi mereka tidak membangunnya lagi. Jika permata itu diperbarui sejak 2009 , salinan gems.github.com akan usang.
Tobu
13

Jika Anda mendapatkan permata dari repositori GitHub publik, Anda dapat menggunakan singkatan

gem 'nokogiri', github: 'tenderlove/nokogiri'
Rajeev Kannav Sharma
sumber
4

Anda juga bisa melakukannya gem install username-projectname -s http://gems.github.com

Chuck Vose
sumber
6
Usang, lihat komentar jawaban lain.
Lee Hambley
1
Masih membantu saya untuk masalah dengan basis kode lama. Ya itu 2013 dan saya sedang mengerjakan proyek rel 2.3.4.
Vivek Sampara
4

Di Gemfile Anda, tambahkan berikut ini:

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

Anda juga dapat menambahkan opsi ref, cabang dan tag,

Misalnya jika Anda ingin mengunduh dari cabang tertentu:

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

Lalu lari:

bundle install
slal
sumber
3

Jika Anda menginstal menggunakan bundler seperti yang disarankan oleh gryzzly dan permata membuat biner maka pastikan Anda menjalankannya bundle exec mygembinarykarena permata disimpan dalam direktori bundler yang tidak terlihat di jalur permata normal.

Mark Cheverton
sumber
2

Pada mesin Linux baru Anda juga perlu menginstal git. Bundle menggunakannya di belakang layar.

pengguna1208639
sumber