Perbarui hanya satu permata dengan bundler

233

Saya menggunakan bundler untuk mengelola dependensi di aplikasi rails saya, dan saya memiliki gem yang dihosting di repositori git termasuk sebagai berikut:

gem 'gem-name', :git => 'path/to/my/gem.git'

Untuk memperbarui permata ini, saya mengeksekusi bundle updatetetapi juga memperbarui semua permata yang disebutkan dalam Gemfile. Jadi apa perintah untuk memperbarui hanya satu permata tertentu?

pelaut
sumber

Jawaban:

354

Di sini Anda dapat menemukan penjelasan yang bagus tentang perbedaan keduanya

Perbarui gem dan dependensi:

bundle update gem-name 

atau

Perbarui secara eksklusif permata:

bundle update --source gem-name

bersama dengan beberapa contoh yang bagus dari kemungkinan efek samping.

Memperbarui

Seperti jawaban @ Tim, pada Bundler 1.14, cara yang didukung secara resmi adalah dengan bundle update --conservative gem-name.

mseebacher
sumber
19
Hati-hati, "memperbarui permata dan dependensi" berarti memperbarui rel itu sendiri jika dependensi dan Anda mungkin tidak menginginkannya. --sumber hanya akan memperbarui permata yang ditentukan sebagai parameter. Jadi lebih baik dalam kebanyakan situasi.
1.44mb
bagaimana cara menentukan versi?
Oshan Wisumperuma
1
@OshanWisumperuma Tentukan versi dalam Gemfile atau mungkin Gemfile.lock sebelum menjalankan perintah bundel ini
Harry Wood
185

Cara untuk melakukan ini adalah dengan menjalankan perintah berikut:

bundle update --source gem-name
dukz
sumber
3
Inilah yang saya butuhkan, saya memiliki permata pribadi dan hanya perlu memperbarui permata itu sendiri tanpa memperbarui dependensi setelah saya membuat beberapa perubahan pada permata pribadi.
Saya naga katak
30

Tampaknya dengan versi bundler yang lebih baru (> = 1.14) itu adalah:

bundle update --conservative gem-name
Tim
sumber
Catatan: perintah ini akan memperbarui satu permata tanpa ketergantungan
mmike
24

Anda hanya perlu menentukan nama permata pada baris perintah:

bundle update gem-name
Brandan
sumber
1
Aneh. Itu yang bundle help updatedikatakan harus dilakukan. Versi bundler mana yang Anda gunakan?
Brandan
40
bundle update gem-nameakan memperbarui permata dan "semua dependensinya".
yaka
5

bundle update gem-name [--major|--patch|--minor]

Ini juga berfungsi untuk dependensi.

Linus
sumber
1
Apakah ada cara untuk memperbaruinya ke versi tertentu? The --major, --minordan --patchbendera otomatis meng-upgrade ke versi terbaru mungkin.
user2490003
2

Saya telah menggunakan bundle update --sourcediri saya untuk waktu yang lama tetapi ada skenario di mana itu tidak berhasil. Untungnya, ada permata bernama bundler-patchyang memiliki tujuan memperbaiki kekurangan ini.

Saya juga menulis posting blog pendek tentang cara menggunakan bundler-patchdan mengapa bundle update --sourcetidak bekerja secara konsisten. Juga, pastikan untuk memeriksa posting oleh chrismo yang menjelaskan dengan sangat rinci apa yang dilakukan --sourceopsi.

Kitto
sumber
0

bundler update --source gem-name akan memperbarui hash revisi di Gemfile.lock yang dapat Anda bandingkan dengan hash komit terakhir dari cabang git (master secara default).

GIT remote: [email protected]:organization/repo-name.git revision: c810f4a29547b60ca8106b7a6b9a9532c392c954

dapat ditemukan di github.com/organization/repo-name/commits/c810f4a2(saya menggunakan steno 8 karakter melakukan hash untuk url)

shushugah
sumber