Instal Permata dari Cabang Github?

94

Di file permata saya, saya memiliki ini:

gem "authlogic", :git => "git://github.com/odorcicd/authlogic.git", :branch => "rails3"

Bagaimana cara menginstalnya sebagai permata sehingga saya dapat mengujinya?

Lance Pollard
sumber

Jawaban:

200

Anda tidak perlu membangun permata secara lokal. Di gemfile Anda, Anda dapat menentukan sumber github dengan ref, branch, atau tag.

gem 'rails', :git => "git://github.com/rails/rails.git", :ref => "4aded"
gem 'rails', :git => "git://github.com/rails/rails.git", :branch => "2-3-stable"
gem 'rails', :git => "git://github.com/rails/rails.git", :tag => "v2.3.5"

Kemudian Anda menjalankan bundle installatau bentuk singkatnya saja bundle.

Baca lebih lanjut tentang ini di sini: http://bundler.io/man/gemfile.5.html#GIT

Pembaruan: Ada pengidentifikasi sumber github .

gem 'country_select', github: 'stefanpenner/country_select'

Namun, mereka memperingatkan agar tidak menggunakannya: NOTE: This shorthand should be avoided until Bundler 2.0, since it currently expands to an insecure git:// URL. This allows a man-in-the-middle attacker to compromise your system.

Setelah Bundler 2.0, Anda dapat mengatasi masalah di atas dengan pernyataan ini di dekat bagian atas Gemfile:

git_source(:github) { |repo| "https://github.com/#{repo}.git" }
Archonic
sumber
memperbarui dari 2017, saya tidak bisa mendapatkan pengenal sumber GitHub berfungsi tetapi: git => ref berfungsi dengan baik
Amias
Mungkin shenanigans Windows-nya, tetapi dengan RubyInstaller 2.3 pada Windows 10, saya memiliki setup yang sama untuk permata saya harus yang belum pernah dirilis, dan saya mengeluarkan bundle installperintah, RubyGems mengatakan yang mengambil git repo, dan terpasang, tapi ketika saya melakukan gem list gemnameitu tidak muncul di permata yang saya pasang secara lokal.
FilBot3
nvm, ini karena saya mengharapkan bundle installuntuk menginstal seolah-olah global, atau untuk semua rubygems. namun, melakukannya per project, atau terkadang per pengguna. github.com/bundler/bundler/issues/3070#issuecomment-46361014
FilBot3
Setidaknya untuk lingkungan kita, github:pengenal memberikan transmits data without encryptionperingatan yang ingin saya hindari. Mengonversi ke git:pengenal dengan httpsmungkin tidak cukup, karena saya juga memiliki cabang untuk ditentukan.
Pysis
Mengenai pemasangan dengan pengenal sumber github: NOTE: This shorthand should be avoided until Bundler 2.0, since it currently expands to an insecure git:// URL. This allows a man-in-the-middle attacker to compromise your system.- sesuai tautan yang Anda berikan
Danny Bullis
64
  1. Gandakan repositori Git.

    $ git clone git://github.com/odorcicd/authlogic.git
    
  2. Ubah ke direktori baru.

    cd authlogic
    
  3. Cabang pembayaran

    $ git checkout -b rails3 remotes/origin/rails3
    
  4. Bangun permata.

    $ rake build gem
    
  5. Pasang permata.

    $ gem install pkg/gemname-1.23.gem
    
janic_
sumber
14
Saya perlu mengubah 4. menjadi "rake build" untuk membangun permata.
raphael_turtle
6
Alih-alih 4. Saya harus menggunakan gem build name-of-file.gemspec untuk membangun gem rake build o rake gem tidak berhasil untuk saya
marimaf
5
Alih-alih 4 dan 5 Anda dapat melakukan "rake install"
drinor
2
Atau langsung dari github: gem 'rails', :github => 'rails', :branch => '5.0-stable'- link: bundler.io/v1.3/git.html
Danny
1
Bagi saya gem build <gem-name>.gemspecbekerja. Saya tidak raketerdaftar di Gemfile. Jadi rake build gemmelempar menyapu bukan bagian dari bundel. tambahkan ke gemfile
RajaRaviVarma
6

Saya harus mengubah jawaban @ janic_ untuk membuatnya berfungsi. Semoga ini akan membantu noob ruby ​​lain seperti saya.

  1. Gandakan repositori Git.

    $ git clone git://github.com/odorcicd/authlogic.git
    
  2. Ubah ke direktori baru.

    $ cd authlogic
    
  3. Cabang pembayaran

    $ git checkout -b rails3 remotes/origin/rails3
    
  4. Instal bundel

    $ bundle install
    
  5. Bangun permata.

    $ rake build
    
  6. Pasang permata.

    $ gem install pkg/gemname-1.23.gem
    
Hai Feng Kao
sumber
-1

Dengan asumsi Anda adalah pengguna Bundler,

$ bundle install

akan menginstal permata yang terdaftar di Gemfile Anda. (Dan jika Anda bukan pengguna Bundler, mengapa Anda memiliki Gemfile?

sampablokuper
sumber
Jika Anda berpikir untuk menolak jawaban ini, harap jelaskan terlebih dahulu mengapa menurut Anda itu harus ditolak. Suara negatif tanpa umpan balik yang membangun tidak membantu untuk memfasilitasi pemahaman. Terima kasih.
sampablokuper