Saat menjalankan rake
saya mendapatkan kesalahan ini:
Anda telah mengaktifkan rake 0.9.2, tetapi Gemfile Anda membutuhkan rake 0.8.7. Pertimbangkan untuk menggunakan bundle exec.
Menggunakan bundle exec rake
alih-alih rake
sepertinya berfungsi, tetapi apakah ini cara terbaik untuk memperbaikinya?
Jawaban:
Menggunakan
bundle exec
adalah cara yang tepat untuk melakukan ini.Pada dasarnya yang terjadi adalah Anda memperbarui rake ke 0.9.2 yang sekarang bertentangan dengan versi yang ditentukan di Gemfile Anda. Sebelumnya versi terbaru
rake
Anda telah cocok dengan versi di Gemfile Anda, jadi Anda tidak mendapatkan peringatan apa pun saat menggunakanrake
.Yehuda Katz (salah satu pengembang Bundler asli) menjelaskan semuanya dalam posting blog ini .
Untuk menghindari mengetik
bundle exec ...
sepanjang waktu, Anda bisa mengatur alias atau fungsi di shell Anda untuk perintah yang biasa Anda gunakan dengan Bundler. Sebagai contoh, inilah yang saya gunakan untuk Rake:sumber
Jika Anda memiliki alasan untuk mempertahankan versi rake saat ini (atau permata apa pun yang menyebabkan masalah), matt sudah benar, cara terbaik untuk melakukannya adalah dengan menjalankannya
bundle exec
. Ini menggunakan versi yang ditentukan dalam Gemfile Anda alih-alih menggunakan versi terbaru permata yang telah Anda instal. (nathan.f77 memiliki solusi yang bagus di bawah ini jika Anda tidak ingin mengetikbundle exec
setiap kali menjalankan rake)Jika tidak, jika tidak ada alasan untuk tidak memperbarui rake, Anda dapat menjalankannya
Ini sebenarnya akan memperbarui Gemfile Anda. Kunci untuk menggunakan rake versi terbaru daripada harus berjalan
bundle exec
setiap waktu.Catatan: jika Anda menjalankan
bundle update
ini saja akan memperbarui semua permata di Gemfile Anda alih-alih hanya rake, yang mungkin bukan yang Anda inginkan, karena jika sesuatu rusak dalam aplikasi Anda, Anda tidak akan tahu pembaruan permata mana yang menyebabkannya.Cara yang kurang disarankan untuk mempertahankan versi yang lebih lama tanpa harus menggunakan
bundle exec
adalah menghapus instalasi versi rake yang lebih baru.Ini berfungsi, tetapi jika Anda bekerja dengan beberapa aplikasi yang menggunakan versi rake yang berbeda, ini bisa menyebalkan karena Anda akan terus-menerus harus menginstal dan mencopot versi yang berbeda.
sumber
gem install rake
. Kemudiangem uninstall rake
dan pilih 0.9.2.bundle update
juga akan memperbarui permata apa pun tanpa versi yang ditentukan untuk versi terbaru yang tersedia. Itu mungkin bukan yang Anda inginkan.bundle update rake
akan lebih banyak precies.public_suffix
bukanrake
. Menjalankanbundle update public_suffix
tidak memiliki efek, sayangnya.Mencoba
bundle clean --force
Ini menghapus setiap permata sistem yang tidak ada dalam bundel ini
sumber
Terakhir kali ini terjadi pada saya, saya telah memperbarui semua permata saya. Saya melakukan
gem uninstall rake
dan terdaftar opsi versi. Saya memilih yang baru, dan kemudian saya tidak perlu menggunakanbundle exec
lagi.Pada dasarnya, jika Anda menggunakannya
bundle exec
menggunakan versi permata apa pun yang diinstal oleh bundel Anda, jadi apa yang ada di Gemfile. Tanpabundle exec
itu menggunakan versi apa pun adalah default sistem Anda.sumber
Ooh! Artikel Katz sangat bagus!
Saya suka solusi ini yang terbaik:
sehingga sekarang Anda bisa mengetik
Untuk orang seperti saya yang sedang mengembangkan aplikasi 2.3 dan 3.0.9, ini membuat saya merasa jauh lebih baik.
sumber
bundle exec
benar, tetapi Anda tidak ingin mengetik setiap waktu.Anda bisa meletakkan ini di .bashrc Anda:
sumber
Cara lain untuk tidak mengetiknya setiap waktu adalah dengan Makefile, misalnya
sumber