Jawaban:
Ini bukan semata-mata jawaban untuk pertanyaan Anda tentang menginstal .gem
paket, tetapi Anda dapat menentukan semua jenis lokasi berdasarkan permata-demi-permata dengan mengedit Gemfile Anda .
:path
atribut akan memasang permata dari jalur itu di mesin lokal Anda.gem "foreman", path: "/Users/pje/my_foreman_fork"
:git
atribut akan menginstal permata dari repositori git jarak jauh.gem "foreman", git: "git://github.com/pje/foreman.git"
# ...or at a specific SHA-1 ref
gem "foreman", git: "git://github.com/pje/foreman.git", ref: "bf648a070c"
# ...or branch
gem "foreman", git: "git://github.com/pje/foreman.git", branch: "jruby"
# ...or tag
gem "foreman", git: "git://github.com/pje/foreman.git", tag: "v0.45.0"
(Seperti @JHurrah disebutkan dalam komentarnya .)
gem "foreman", :git => "https://github.com/pje/foreman.git"
Tampaknya bundler tidak dapat menggunakan file .gem di luar kotak. Menunjuk jalur: ke direktori yang berisi file .gem tidak berfungsi. Beberapa orang menyarankan untuk menyiapkan server permata lokal (geminabox, stickler) untuk tujuan itu.
Namun, yang saya temukan jauh lebih sederhana adalah dengan menggunakan permata "server" lokal dari sistem file: Cukup masukkan file .gem Anda di direktori lokal, lalu gunakan "gem generate_index" untuk menjadikannya repositori Gem
mkdir repo
mkdir repo/gems
cp *.gem repo/gems
cd repo
gem generate_index
Akhirnya arahkan bundler ke lokasi ini dengan menambahkan baris berikut ke Gemfile Anda
source "file://path/to/repo"
Jika Anda memperbarui permata di repositori, pastikan untuk membuat ulang indeks.
gem server
atau saya ingin meng-host seluruh proyek, hanya file .gem.
source "file://#{File.expand_path('.')}/chef-11.10.0.dev.2"
Could not fetch specs from file://Users/nakilon/....../
Secara default Bundler akan memeriksa sistem Anda terlebih dahulu dan jika tidak dapat menemukan permata, ia akan menggunakan sumber yang ditentukan dalam Gemfile Anda.
Anda dapat memaksa bundler untuk menggunakan permata yang Anda gunakan menggunakan "paket bundel" dan "bundel instal --local"
Di mesin pengembangan Anda:
bundle install
(Menginstal permata yang diperlukan dan membuat Gemfile.lock)
bundle package
(Tembolok permata di vendor / cache)
Di server:
bundle install --local
(--local berarti "gunakan permata dari vendor / cache")
bundle install
Setelah itu, salin file permata ke vendor / cache , tambahkan file permata kembali ke file permata dan jalankan bundle install --local
bundle package
adalah saran yang bagus, bahkan sekarang, tiga tahun kemudian. Jika versi Bundler Anda lebih lama dari 2.0 (belum dirilis pada penulisan ini), Anda perlu menggunakan bundle package --all
jika Anda ingin menyertakan permata dengan path
atau git
dependensi. Ini akan memberi Anda pengingat yang membantu jika mendeteksi dependensi seperti itu.
--local
dokumen: "Perhatikan bahwa jika permata khusus platform yang sesuai ada di rubygems.org, itu tidak akan ditemukan."
Menambahkan .gem
ke vendor/cache
tampaknya bekerja. Tidak ada opsi yang diperlukan di Gemfile
.
Saya merasa paling mudah untuk menggunakan server gem saya sendiri geminabox
Lihat instruksi sederhana ini .