Anda telah mengaktifkan rake 0.9.0, tetapi Gemfile Anda membutuhkan rake 0.8.7

124

Saya mencoba menjalankan proyek rel, saya mengerti

Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

Jika saya melakukannya: "bundle install"

tapi aku mengerti

You have already activated rake 0.9.0, but your Gemfile requires rake 0.8.7

saat melakukan

rake db:migrate
Mujah Maskey
sumber

Jawaban:

245

Pertama, periksa untuk memastikan bahwa rake disebutkan dalam Gemfile Anda. Jika tidak, tambahkan, dan tentukan versi "Anda sudah diaktifkan".

Kemudian, Anda harus memberi tahu bundel untuk memperbarui versi rake yang digunakannya untuk aplikasi Anda:

bundle update rake

Ini akan memperbarui Gemfile.lockuntuk Anda.

danneu
sumber
2
ini tidak berhasil untuk saya. ketika saya menjalankan perintah ini ia melakukan hal yang persis sama dengan 'bundle install' dan itu menunjukkan bahwa ia menggunakan versi rake yang sama. Itu tidak memperbaruinya.
EE33
5
Saya harus menambahkan permata 'rake', 'versi #' ke gemfile saya, dan jalankan 'bundle update rake' untuk gemfile.lock saya agar diperbarui dengan benar. FYI untuk siapa pun yang tidak bisa mendapatkan solusi ini bekerja untuk mereka.
EE33
44

Di mana Anda saat ini menggunakan perintah rake seperti

rake db:migrate

Gunakan ini sebagai gantinya:

bundle exec rake db:migrate

ini akan menjadi kasus sampai versi terbaru dari rel dan / atau menyapu bekerja dengan baik.

Harga Floyd
sumber
3
Sedikit tentang "versi terbaru rel dan / atau rake" yang bekerja bersama dengan baik hanya memiliki makna pada titik waktu tertentu, tanpa nama, dan berdasarkan beberapa asumsi spesifik tentang alur kerja yang digunakan. Saya pikir implikasi ini adalah "Anda menggunakan rel tepi berdarah, dan rake belum menyusul." Tapi kasus itu dapat diselesaikan dengan pendekatan "bundle exec" atau "edit Gemfile" juga, dan pendekatan ini juga memecahkan masalah ketika tidak ada masalah kompatibilitas intrinsik, tetapi hanya riwayat alur kerja yang kacau.
jackr
24

Saya berterima kasih kepada Dobry Den, sorak-sorai Bung. tetapi sedikit lagi yang harus saya lakukan. di sini adalah solusi (berfungsi untuk saya). Saya telah menambahkan

gem 'rake','0.8.7'

pada Gemfile, yang tidak ada di sana, tetapi versi rel baru saya secara otomatis menginstal rake (0.9.0).

setelah saya menghapus rake0.9.0 oleh gem uninstall rake dan setelah melakukan bundle update rake, saya dapat membuat dan memigrasi basis data.

Mujah Maskey
sumber
7

Tentukan versi yang Anda inginkan di Gemfile Anda.

gem 'rake', '0.9.0' 

kemudian

bundle update rake

Anda perlu menggunakan bundle exec untuk menjalankan tugas menyapu Anda

bundle exec rake db:migrate
hacksignal
sumber
Tampaknya tidak "membatalkan aktivasi" versi yang lebih baru. Menghapus Rake sepenuhnya dan menginstal ulang karya.
JosephK
6

Oh, lihat, ini masa depan. Bagi saya, itu mengeluh saya telah menyapu 10.x diinstal ketika ingin 0.9.5. Tidak yakin, tidak cukup akrab dengan Ruby untuk benar-benar menggali apa yang terjadi pada nomor versi terbaru, tetapi yang saya lakukan adalah:

gem uninstall rake
gem install rake -v 0.9.5

untuk memaksa sistem untuk menginstal versi rake yang diinginkan aplikasi (bagi saya itu adalah Octopress).

subdigit
sumber
2
Masa depan disebut, dan ingin meminjam celana Hammer Anda.
Keith Layne
Hai, ini masa depan lagi. Saya mendengar celana Hammer akhirnya membuat comeback.
subdigit
5

Saya punya masalah ini (dengan permata lain yang tidak menyapu) dan saya bisa memperbaikinya

gem uninstall <complaining gem>
gem install <complaining gem>

bundle install
bundle update

Perhatikan bahwa kata kunci 'sudo' tidak digunakan (mis. Sudo bundle install) karena hal itu dapat menempatkan permata Anda ke direktori di mana aplikasi rel Anda mungkin tidak mencari.

gletser
sumber
3

Jika saya mengerti apa yang Anda tidak minta, Anda perlu membuka Gemfilefile Anda dan mengubah baris ...

gem 'rake', '0.8.7'

...untuk...

gem 'rake', '0.9.0'
Olivier L.
sumber
Bagaimana jika saya ingin menggunakan 0.8.7 bukannya 0.9?
Kir
6
rake gem tidak ditentukan di Gemfile Anda secara default karena itu adalah ketergantungan Rails. jika Anda memperbarui permata rake menjadi 0.9.0, Anda masih memiliki permata 0.8.7 di sistem Anda (periksa dengan gem list). Saya cukup yakin bahwa jika gem 'rake', '0.8.7'masih ditentukan dalam Anda Gemfile.lock, masih akan menggunakan permata 0.8.7 tanpa masalah. jika tidak, maka coba jalankan bundlesetelah menambahkan gem 'rake', '~> 0.8.7'ke Gemfile Anda (bukan .lock) dan lihat apakah ia mengatakan sesuatu.
danneu
Saya setuju dengan @Dobry Den.
Olivier L.
permata 'rake' tidak didefinisikan. Dibutuhkan satu default jika saya memiliki beberapa Gem Rake (0.8.7 dan 0.9.0). Bisakah kita membuat default ke yang lama?
Mujah Maskey
3

Tambahkan ini ke Gemfile Anda

# Rake 0.9.0 break Rails.
gem "rake", "!= 0.9.0"

Dan kemudian uninstall rake-0.9.0


sumber