Jika Anda menggunakan Bundler 1.1 atau yang lebih baru, Anda dapat menggunakan bundle clean
, seperti yang Anda bayangkan. Ini berlebihan jika Anda menggunakan bundle install --path
(Bundler mengelola lokasi yang Anda tentukan dengan --path, jadi bertanggung jawab untuk menghapus permata yang kedaluwarsa), tetapi jika Anda telah menggunakan Bundler untuk menginstal permata sebagai permata sistem maka bundle clean --force
akan menghapus permata sistem apa pun yang tidak dibutuhkan oleh Gemfile Anda. Peringatan yang sangat membutakan: jangan lakukan ini jika Anda memiliki aplikasi lain yang mengandalkan permata sistem yang tidak ada di Gemfile Anda!
Pat Shaughnessy memiliki deskripsi yang baik tentang bundle clean
dan tambahan baru lainnya di bundler 1.1 .
bundle clean --force
tidak menyentuh permata global Anda, tetapi hanya yang ada di gemet Anda saat ini. Jadibundle clean --force
menghasilkan hasil yang sama seperti dan lebih cepat kemudianrvm gemset empty
diikuti olehbundle install
.Jika Anda menggunakan RVM, Anda dapat menggunakannya
rvm gemset empty
untuk gemset saat ini - perintah ini akan menghapus semua permata yang dipasang ke gemset saat ini (gemset itu sendiri akan tetap di tempatnya). Kemudian jalankanbundle install
untuk menginstal versi permata yang sebenarnya. Juga pastikan bahwa Anda tidak menghapus permata umum seperti rake, bundler, dan sebagainya selamarvm gemset empty
(jika demikian, instal secara manual melaluigem install
sebelumnyabundle install
).sumber
Jika Anda menggunakan RVM, Anda dapat menginstal permata Anda ke dalam gemet . Dengan begitu, ketika Anda ingin melakukan pembersihan penuh, Anda cukup menghapus gemet, yang pada gilirannya menghapus semua permata yang terpasang di dalamnya. Pilihan Anda yang lain adalah dengan menghapus permata yang tidak digunakan dan menjalankan kembali
bundle install
perintah Anda .Karena bundler dimaksudkan sebagai alat pembuatan versi gem proyek per proyek, bundler tidak memberikan
bundle clean
perintah. Melakukan hal itu berarti kemungkinan menghilangkan permata yang terkait dengan proyek lain juga, yang tidak diinginkan. Itu berarti bundler mungkin alat yang salah untuk digunakan untuk mengelola direktori permata Anda. Rekomendasi pribadi saya adalah menggunakan gemsets RVM untuk meng-sandbox permata Anda dalam proyek atau versi ruby tertentu.sumber
Sejujurnya, saya memiliki masalah dengan dependensi bundler melingkar dan cara terbaik untuk melakukannya adalah
rm -rf .bundle
. Selamatkan dirimu dari sakit kepala dan gunakan saja palu.sumber
rvm implode --force
dan kemudian instal ulang rvmSaya berasumsi Anda menginstal permata ke
vendor/bundle
? Jika demikian, mengapa tidak menghapus semua permata dan melakukan pembersihanbundle install
?sumber
Saat mencari jawaban untuk pertanyaan yang sama, saya menemukan gem_unused .
Anda juga mungkin ingin membaca artikel ini: http://chill.manilla.com/2012/12/31/clean-up-your-dirty-gemsets/
Kode sumber tersedia di GitHub: https://github.com/ apolzon / gem_unused
sumber
Hapus saja permata usang dari Gemfile Anda. Jika Anda berbicara tentang Heroku (Anda tidak menyebutkannya) maka slug dikompilasi setiap rilis baru, hanya menggunakan konten file tersebut saat ini.
sumber
Jalankan saja, untuk membersihkan permata usang dan menghapus peringatan cetak setelah bundel.
sumber