2012-01-10 33 views
12

Đây là tôi GemfileSử dụng trình quản lý gói có thể giải quyết vấn đề này?

source :rubygems 

gem 'rake', '0.9.2.2' 
gem 'sinatra' 
gem 'activerecord', '3.0.9' 
gem 'pg', '~> 0.12.2' 
gem 'logger' 
gem 'nokogiri' 

group :development, :test do 
    gem 'rack-test' 
    gem 'ruby-debug19' 
    gem 'sqlite3' 
end 

tôi chạy rake console mà làm việc trong các dự án khác và bây giờ tôi nhận được tin nhắn này:

You have already activated activesupport 3.1.3, but your Gemfile requires activesupport 3.0.9. Using bundle exec may solve this.

Làm thế nào để sử dụng `bó exec để giải quyết này? Nó có nghĩa là gì?

Trả lời

11

Bạn có thể chạy bundle exec rake console có nghĩa là lệnh (trong trường hợp này là rake console) sẽ bị khóa đối với các loại đá quý cụ thể được liệt kê trong Gemfile của bạn.

+1

Lưu ý rằng trong một số phiên bản của RVM, 'bó exec' là cần thiết, và trong một số, đó là tự động . Tôi nghĩ đó là một sự tiện lợi mà họ thêm vào một lúc, và sau đó lấy lại vì nó gây ra vấn đề. –

+0

Tuyệt, tôi không biết điều đó! –

41

Để ngừng sử dụng bundle exec rake bạn có thể chạy bundle clean --force. Lệnh này sẽ cập nhật Gemfile.lock của bạn.

+0

hoạt động như một sự quyến rũ! –

+6

tôi tự hỏi tại sao đây không phải là câu trả lời được chấp nhận thay thế. – vipin8169

+0

Công trình này hoạt động! Tốt hơn nhiều so với gói exec workaround – pronoob

6

rubygems-bundler giải quyết vấn đề này. Chạy các lệnh sau:

$ gem install rubygems-bundler

$ $ gem regenerate_binstubs

Sau đó thử bó của bạn một lần nữa.

+0

điều này làm việc cho tôi và imo câu trả lời tốt nhất mà làm việc mà không thực hiện bất kỳ thay đổi cho Gemfile và Gemfile.lock hiện tại của bạn –

0

Bạn có thể kiểm tra để đảm bảo rằng bạn bao gồm rake trong Gemfile của mình. Nếu không, hãy thêm nó và chỉ định phiên bản "bạn đã kích hoạt".

hoặc bạn chỉ có thể cập nhật nó trên địa phương của bạn như

bundle update rake 

Tôi hy vọng rằng điều này sẽ giúp

Các vấn đề liên quan