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?

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.


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

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

Catatan: perintah ini akan memperbarui satu permata tanpa ketergantungan
mmike

24

Anda hanya perlu menentukan nama permata pada baris perintah:

bundle update gem-name

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.


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.


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: git@github.com: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)

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.