Bagaimana cara menginstal permata dari sumber GitHub?


451

Saya ingin memasang permata dari sumber GitHub terbaru.

Bagaimana saya melakukan ini?

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)

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.


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 

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

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


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

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'

4

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


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

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.


2

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.