2011-07-12 32 views
8

Tôi đã thấy nhiềulàm thế nào để bạn kích hoạt hoặc thiết lập các cào mặc định?

You have already activated rake 0.9.x, but your Gemfile requires rake 0.x.x 

lỗi.

Tất nhiên, chúng có thể được giải quyết (tạm thời hoặc luôn luôn) bằng một số phương pháp như sau.

bundle exec rake 

Phương thức trên hoạt động nhưng bạn luôn phải nhập trình quản lý gói.

Nó cũng có thể được giải quyết bằng cách

bundle update 

Nhưng bó cập nhật cũng cập nhật đá quý khác của bạn.

Một số người nói nó có thể được giải quyết bằng cách

gem uninstall unwanted_rake_version 

Vâng, cào không mong muốn có thể được cài đặt nhưng nó vẫn đánh dấu là kích hoạt do đó, vẫn đem lại cho các lỗi.

Một giải pháp là chỉ định rõ ràng phiên bản rake trong Gemfile của bạn nhưng, đó không phải là câu hỏi. Đó là làm thế nào để thiết lập các phiên bản cào mặc định, hoặc kích hoạt phiên bản cụ thể trong rvm hoặc các loại cài đặt ruby?

Trả lời

8

Các phiên bản mới hơn của cào có thể được kích hoạt bằng cách cung cấp một đối số đầu tiên tùy chọn, đó là phiên bản đá quý.

$ rake 0.9.2

Ngoài ra, nếu bạn có một phiên bản cũ của cào bạn có thể cập nhật các kịch bản cào bằng tay để bao gồm tham số này (hoặc chỉ định bất kỳ phiên bản cụ thể mà bạn muốn).

Tập lệnh rake thường nằm trong/usr/bin/rake (hoặc ~/.rvm/gems/ruby ​​- # {ruby-name}/rake nếu sử dụng rvm). Và dictates phiên bản của họ đá quý để tải trước khi phân tích cú pháp paramaters.

Có vẻ như điều này trên hệ thống của tôi.

$ cat ~/.rvm/gems/ruby-1.9.2-p180/bin/rake 

#!/home/tomcat/.rvm/rubies/ruby-1.9.2-p180/bin/ruby 
# 
# This file was generated by RubyGems. 
# 
# The application 'rake' is installed as part of a gem, and 
# this file is here to facilitate running it. 
# 

require 'rubygems' 

version = ">= 0" 

if ARGV.first =~ /^_(.*)_$/ and Gem::Version.correct? $1 then 
    version = $1 
    ARGV.shift 
end 

gem 'rake', version 
load Gem.bin_path('rake', 'rake', version) 

Các bit quan trọng là thay đổi gem 'rake', versionversion sẽ buộc cào để một hệ thống phiên bản cụ thể/RVM rộng.

Mọi chi tiết, Katz' article giải thích độc đáo như thế nào nhị phân chạy theo rubygems

+0

Là một lưu ý phụ. Bundle exec là chiến lược 'kosher' hơn. Nếu bạn sửa đổi kịch bản rake, ruby-gems có thể (và có thể sẽ) ghi đè lên nó. Bạn có thể muốn tham khảo một bản sao ở đâu đó an toàn để thay thế – diedthreetimes

3

Khi tôi nhận được rằng lỗi, thông thường nó là kết quả làm việc giữa các dự án phụ thuộc vào phiên bản khác nhau của cào.Một sửa chữa dễ dàng là

gem uninstall rake 

Và sau đó trong thư mục dự án của bạn (giả sử bạn đang làm việc với Bundler) chỉ đơn giản

bundle 
-1

tôi luôn luôn gỡ bỏ cài đặt cào đầu tiên, chỉ huy như thế này:

gem uninstall rake -v=version 

sau đó cài đặt phiên bản khác

gem install rake -v=version 
Các vấn đề liên quan