Bạn đã kích hoạt rake 0.9.0, nhưng Gemfile của bạn yêu cầu rake 0.8.7


124

Tôi đang cố gắng chạy dự án đường ray, tôi nhận được

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

Nếu tôi làm: "cài đặt bó"

nhưng tôi đang nhận được

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

trong khi làm

rake db:migrate

Câu trả lời:


245

Đầu tiên, hãy kiểm tra để chắc chắn rằng cào được đề cập trong Gemfile của bạn. Nếu không, hãy thêm nó và chỉ định phiên bản "bạn đã kích hoạt".

Sau đó, bạn sẽ cần nói với gói để cập nhật phiên bản cào mà nó đang sử dụng cho ứng dụng của bạn:

bundle update rake

Nó sẽ cập nhật Gemfile.lockcho bạn.


2
điều này đã không làm việc cho tôi. Khi tôi chạy lệnh này, nó thực hiện chính xác giống như 'cài đặt gói' và nó cho thấy rằng nó đang sử dụng cùng một phiên bản cào. Nó không cập nhật nó.
EE33

5
Tôi đã phải thêm gem 'rake', 'phiên bản #' vào gemfile của mình và chạy 'gói cập nhật rake' để gemfile.lock của tôi được cập nhật chính xác. FYI cho bất cứ ai không thể có được giải pháp này để làm việc cho họ.
EE33

44

Nơi bạn hiện đang sử dụng các lệnh cào như

rake db:migrate

Sử dụng cái này thay thế:

bundle exec rake db:migrate

đây sẽ là trường hợp cho đến khi phiên bản mới nhất của đường ray và / hoặc cào hoạt động tốt với nhau.


3
Một chút về "phiên bản mới nhất của đường ray và / hoặc cào" hoạt động tốt với nhau chỉ có ý nghĩa tại một thời điểm cụ thể, chưa được đặt tên và theo một số giả định cụ thể về quy trình sử dụng. Tôi nghĩ hàm ý này là "bạn đang sử dụng đường ray cạnh chảy máu và cào chưa bắt kịp." Nhưng trường hợp đó có thể được giải quyết bằng cách tiếp cận "gói thực thi" hoặc "chỉnh sửa Gemfile", và các phương pháp này cũng giải quyết vấn đề khi không có vấn đề tương thích nội tại, mà chỉ có lịch sử quy trình làm việc bị rối loạn.
jackr

24

Tôi cảm ơn Dobry Den, chúc mừng anh chàng. nhưng ít hơn tôi phải làm đây là giải pháp (làm việc cho tôi). Tôi đã thêm

gem 'rake','0.8.7'

trên Gemfile, không có ở đó, nhưng phiên bản đường ray mới của tôi sẽ tự động cài đặt rake (0.9.0).

sau khi tôi đã xóa rake0.9.0 gem uninstall rake và sau khi thực hiện bundle update rake, tôi có thể tạo và di chuyển cơ sở dữ liệu.



7

Chỉ định phiên bản mà bạn muốn trong Gemfile của bạn.

gem 'rake', '0.9.0' 

sau đó

bundle update rake

bạn cần sử dụng gói thực thi để chạy tác vụ cào

bundle exec rake db:migrate

Có vẻ như không "hủy kích hoạt" phiên bản mới hơn. Mặc dù vậy, loại bỏ hoàn toàn Rake và cài đặt lại các công trình.
JosephK

6

Hãy nhìn xem, đó là tương lai. Đối với tôi, nó đã phàn nàn rằng tôi đã cài đặt rake 10.x khi nó muốn 0.9.5. Không hoàn toàn chắc chắn, không đủ quen thuộc với Ruby để thực sự tìm hiểu những gì đã xảy ra với các số phiên bản gần đây, nhưng những gì tôi đã làm là:

gem uninstall rake
gem install rake -v 0.9.5

để buộc hệ thống cài đặt phiên bản cào mà ứng dụng muốn (đối với tôi đó là Octopress).


2
Tương lai được gọi, và nó muốn mượn chiếc quần Hammer của bạn.
Keith Layne

Xin chào, đó là tương lai một lần nữa. Tôi nghe nói quần Hammer cuối cùng đã trở lại.
subdigit

5

Tôi gặp vấn đề này (với một viên ngọc khác không bị cào) và tôi đã có thể khắc phục bằng cách

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

bundle install
bundle update

Lưu ý rằng từ khóa 'sudo' không được sử dụng (ví dụ: cài đặt gói sudo) vì điều đó có thể đặt đá quý của bạn vào các thư mục mà ứng dụng rails của bạn có thể không tìm kiếm.


3

Nếu tôi hiểu những gì bạn không hỏi, bạn cần mở Gemfiletệp của mình và thay đổi dòng ...

gem 'rake', '0.8.7'

...đến...

gem 'rake', '0.9.0'

Nếu tôi muốn sử dụng 0.8.7 thay vì 0.9 thì sao?
Kir

6
đá quý cào không được chỉ định trong Gemfile của bạn theo mặc định vì đó là phụ thuộc Rails. nếu bạn cập nhật đá quý rake lên 0.9.0, bạn vẫn có đá quý 0.8.7 trên hệ thống của mình (kiểm tra với gem list). Tôi khá chắc chắn rằng nếu gem 'rake', '0.8.7'vẫn được chỉ định trong của bạn Gemfile.lock, nó vẫn sẽ sử dụng đá quý 0.8.7 mà không gặp vấn đề gì. nếu không, hãy thử chạy bundlesau khi thêm gem 'rake', '~> 0.8.7'vào Gemfile của bạn (không phải .lock) và xem nó có nói gì không.
danneu

Tôi đồng ý với @Dobry Den.
Olivier L.

đá quý 'rake' không được xác định. Nó mặc định là một nếu tôi có nhiều Gem Rake (0.8.7 và 0.9.0). Chúng ta có thể mặc định cho cái cũ không?
Mujah Maskey

3

Thêm phần này vào Gemfile của bạn

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

Và sau đó gỡ cài đặt rake-0.9.0

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.