2011-11-12 24 views
15

Bất cứ khi nào tôi chạy một lệnh cào (ví dụ: rake routes) Tôi nhận được lỗi này:Tại sao môi trường của tôi yêu cầu tôi chạy gói exec?

You have already activated rake 0.9.2.2, but your Gemfile requires rake 0.9.2. Using bundle exec may solve this. 

Nếu tôi chạy bundle exec rake routes nó hoạt động.

Tôi muốn có thể chỉ đơn giản là rake routes mà không phải chạy bundle exec rake routes.

Tôi đã xem xét các câu hỏi khác có lỗi tương tự và đã thử các giải pháp khác nhau (như chạy bundle update) không có kết quả.

Ngoài ra, trong gemfile của tôi tôi đã chỉ định gem 'rake', '0.9.2'

Bất kỳ lời đề nghị?

+0

Cập nhật nhanh. Gần đây đã tìm thấy lời giải thích này từ RailsTutorial về việc cần sử dụng 'bundle exec':" Như đã đề cập trong phần 3.2.1, nó là cần thiết nói chung với các lệnh tiền tố như rake hoặc rspec với gói exec để các chương trình chạy chính xác (Vì lý do kỹ thuật, ngoại lệ duy nhất cho điều này là chính bản thân lệnh rails). "Hơn nữa," Miễn là số phiên bản của RVM là 1.11.x hoặc cao hơn, các gem được cài đặt sẽ tự động được thực hiện trong Môi trường Bundler, "do đó không yêu cầu tiền tố' bó exec'. – mmichael

+0

liên kết đến giải thích: http://ruby.railstutorial.org/chapters/static-pages#sec-eliminating_bundle_exec – mmichael

Trả lời

8

Cố gắng thực hiện:

gem list 

Bạn có thể sẽ thấy một vài phiên bản cài đặt cho cào. Nhân tiện, bundle exec là cách đúng cách thực thi mã của bạn trong ngữ cảnh của ứng dụng đường ray, xem this để có giải thích tốt. Vì vậy, bạn có thể sử dụng bí danh để nhập ít hơn.

+2

Bạn cũng có thể bắt đầu phiên trình vỏ của mình với 'export RUBYOPT = -rbundler/setup', tất cả những gì 'bundle exec' thực hiện. – yfeldblum

+0

Điều này rất thông tin, cảm ơn bạn. – mmichael

+1

Điều đó mang lại cho tôi: ruby: không có tệp nào để tải - bundler/setup (LoadError) –

2

Trong trường hợp nếu bạn sử dụng rvm. bạn có thể thử theo dõi

rvm gem list 
2

Như @lucapette đã nói, bạn có thể có nhiều phiên bản cào. Giả sử bạn muốn sử dụng 0.9.2, bạn có thể xóa phiên bản 0.9.2.2 để thoát khỏi cảnh báo sau đó chạy cài đặt bó để đảm bảo bạn có tất cả phiên bản đá quý phù hợp với phiên bản bạn muốn (0.9.2 trong trường hợp của bạn, 0.8.7 trong ví dụ của tôi dưới đây).

Sau đây là các bước sau:

$ gem list 

*** LOCAL GEMS *** 

... 
rake (0.9.2.2, 0.8.7) 
... 

$ gem uninstall rake 

Select gem to uninstall: 
1. rake-0.8.7 
2. rake-0.9.2.2 
3. All versions 
> 2 

You have requested to uninstall the gem: 
     rake-0.9.2.2 
addressable-2.2.6 depends on [rake (>= 0.7.3)] 
... 
If you remove this gems, one or more dependencies will not be met. 
Continue with Uninstall? [Yn] Y 
Successfully uninstalled rake-0.9.2.2 
INFO: gem "0.9.2.2" is not installed 

$ bundle install 
0

Bạn có thể thấy thông báo này nếu một số đá quý trong gemfile của bạn yêu cầu một phiên bản cũ của Rake đến một trong những bạn đã cài đặt. Có lẽ bạn đã cập nhật rake. Bạn thường có thể sửa chữa nó bằng cách cập nhật đá quý của bạn. Chạy:

bundle update 

Điều này sẽ cập nhật gói của bạn bằng cách sử dụng đá quý gần đây nhất trong gemfile của bạn. Điều này có khả năng sẽ khắc phục sự không tương thích rake.

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