2012-03-12 23 views
20

Tôi biết câu hỏi này đã được hỏi trong một biểu mẫu hoặc một câu hỏi khác trước đây, nhưng tôi vẫn không thể có giải pháp làm việc cho việc này.Ruby on Rails - lỗi khi chạy dưa chuột: Bạn đã kích hoạt activesupport 3.2.1, nhưng Gemfile của bạn yêu cầu activesupport 3.1.0.

Tôi lấy saas nhiên cung cấp trực tuyến và mã được nhân bản trực tiếp từ https://github.com/saasbook/hw3_rottenpotatoes

Khi tôi chạy dưa chuột từ dấu nhắc lệnh

Using the default profile... 
You have already activated activesupport 3.2.1, but your Gemfile requires activesupport 3.1.0. Using bundle exec may solve this. (Gem::LoadError) 
/Users/chemin/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler/runtime.rb:31:in `block in setup' 
/Users/chemin/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler/runtime.rb:17:in `setup' 
/Users/chemin/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler.rb:110:in `setup' 
/Users/chemin/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler/setup.rb:7:in `<top (required)>' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in `require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in `rescue in require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require' 
/Users/chemin/rails_projects/saas/hw3_rottenpotatoes/config/boot.rb:6:in `<top (required)>' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/rails_projects/saas/hw3_rottenpotatoes/config/application.rb:1:in `<top (required)>' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/rails_projects/saas/hw3_rottenpotatoes/config/environment.rb:2:in `<top (required)>' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-rails-1.3.0/lib/cucumber/rails.rb:7:in `<top (required)>' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in `require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in `rescue in require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require' 
/Users/chemin/rails_projects/saas/hw3_rottenpotatoes/features/support/env.rb:7:in `<top (required)>' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/rb_support/rb_language.rb:129:in `load' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/rb_support/rb_language.rb:129:in `load_code_file' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime/support_code.rb:171:in `load_file' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime/support_code.rb:83:in `block in load_files!' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime/support_code.rb:82:in `each' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime/support_code.rb:82:in `load_files!' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime.rb:175:in `load_step_definitions' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime.rb:40:in `run!' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/cli/main.rb:43:in `execute!' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/cli/main.rb:20:in `execute' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/bin/cucumber:14:in `<top (required)>' 
/Users/chemin/.rvm/gems/[email protected]/bin/cucumber:19:in `load' 
/Users/chemin/.rvm/gems/[email protected]/bin/cucumber:19:in `<main>' 

sau khi chạy bó cài đặt phiên bản tôi nhận được một thậm chí tin nhắn xấu hơn

Could not find rack-cache (~> 1.1) amongst [actionmailer-3.1.0, actionpack-3.1.0, activemodel-3.1.0, activerecord-3.1.0, activeresource-3.1.0, activesupport-3.1.0, addressable-2.2.7, archive-tar-minitar-0.5.2, arel-2.2.1, bcrypt-ruby-3.0.1, builder-3.0.0, capybara-1.1.2, childprocess-0.3.1, coffee-rails-3.1.1, coffee-script-2.2.0, coffee-script-source-1.2.0, columnize-0.3.6, cucumber-1.1.8, cucumber-rails-1.3.0, cucumber-rails-training-wheels-1.0.0, database_cleaner-0.7.1, diff-lcs-1.1.3, erubis-2.7.0, execjs-1.3.0, ffi-1.0.11, gherkin-2.8.0, haml-3.1.4, hike-1.2.1, i18n-0.6.0, jquery-rails-1.0.19, json-1.6.5, json_pure-1.6.5, launchy-2.0.5, libv8-3.3.10.4-x86_64-darwin-10, linecache19-0.5.12, mail-2.3.0, mime-types-1.17.2, multi_json-1.1.0, nokogiri-1.5.0, polyglot-0.3.3, rack-1.3.6, rack-cache-1.0.3, rack-mount-0.8.3, rack-ssl-1.3.2, rack-test-0.6.1, rails-3.1.0, railties-3.1.0, rake-0.9.2.2, rdoc-3.12, ruby-debug-base19-0.11.25, ruby-debug19-0.11.6, ruby_core_source-0.1.5, rubyzip-0.9.6.1, sass-3.1.15, sass-rails-3.1.5, selenium-webdriver-2.13.0, sprockets-2.0.3, sqlite3-1.3.5, term-ansicolor-1.0.7, therubyracer-0.9.10, thor-0.14.6, tilt-1.3.3, treetop-1.4.10, tzinfo-0.3.31, uglifier-1.2.3, xpath-0.1.4] (Gem::LoadError) 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:451:in `block in find_in_unresolved' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:451:in `map' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:451:in `find_in_unresolved' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:43:in `require' 
/Users/chemin/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler/dsl.rb:1:in `<top (required)>' 
/Users/chemin/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler/definition.rb:17:in `build' 
/Users/chemin/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler.rb:138:in `definition' 
/Users/chemin/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler.rb:126:in `load' 
/Users/chemin/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler.rb:110:in `setup' 
/Users/chemin/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler/setup.rb:7:in `<top (required)>' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in `require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in `rescue in require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require' 
/Users/chemin/rails_projects/saas/hw3_rottenpotatoes/config/boot.rb:6:in `<top (required)>' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/rails_projects/saas/hw3_rottenpotatoes/config/application.rb:1:in `<top (required)>' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/rails_projects/saas/hw3_rottenpotatoes/config/environment.rb:2:in `<top (required)>' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-rails-1.3.0/lib/cucumber/rails.rb:7:in `<top (required)>' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in `require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in `rescue in require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require' 
/Users/chemin/rails_projects/saas/hw3_rottenpotatoes/features/support/env.rb:7:in `<top (required)>' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/rb_support/rb_language.rb:129:in `load' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/rb_support/rb_language.rb:129:in `load_code_file' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime/support_code.rb:171:in `load_file' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime/support_code.rb:83:in `block in load_files!' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime/support_code.rb:82:in `each' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime/support_code.rb:82:in `load_files!' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime.rb:175:in `load_step_definitions' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime.rb:40:in `run!' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/cli/main.rb:43:in `execute!' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/cli/main.rb:20:in `execute' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/bin/cucumber:14:in `<top (required)>' 
/Users/chemin/.rvm/gems/[email protected]/bin/cucumber:19:in `load' 
/Users/chemin/.rvm/gems/[email protected]/bin/cucumber:19:in `<main>' 

Trả lời

39

Có một vài giải pháp, cách dễ nhất là thử chạy bundle exec cucumber trước tiên và xem điều đó có giải quyết được vấn đề của bạn hay không.

Nếu điều đó không làm việc, xóa gemset rails3tutorial của bạn và tái tạo nó một lần nữa:

rvm gemset delete rails3tutorial 
rvm [email protected] --create 

Sau đó chạy bundle, và hy vọng nó sẽ cài đặt đá quý cho bạn. Theo dõi điều này với bundle exec cucumber (Tôi hầu như luôn luôn chạy thông số kỹ thuật và cukes của tôi bằng cách sử dụng bundle exec để nó không cố gắng vô tình tải đá quý cũ).

Hy vọng công trình này hoạt động!

UPDATE: Giải thích bundle exec hơn một chút

bundle exec là một lệnh mà bundler đi kèm với đó sẽ chạy bất kỳ lệnh khác trong bối cảnh Gemfile của bạn. Trong trường hợp này, về cơ bản bạn đang nói nó chạy lệnh cucumber nhưng chỉ chỉ với các đá quý từ Gemfile của bạn chứ không phải với tất cả các đá quý hiện có sẵn.

Ví dụ: nếu trước đây bạn đã cài đặt activesupport 3.2.1 và Gemfile của bạn yêu cầu activesupport 3.1.0. Khi điều này xảy ra, tôi tin rằng lệnh dưa chuột tự kéo vào 'activesupport' (có thể thông qua cuộc gọi require 'cucumber/rails' trong env.rb) mà lấy bất kỳ phiên bản ngẫu nhiên nào của activesupport có thể (giả sử nó lấy 3.2.1) từ các đá quý sẵn có của bạn. Sau đó, nó quyết định tải môi trường đường ray của bạn để bắt đầu chạy các tính năng của bạn. Khi nó bắt đầu tải ứng dụng thực tế của bạn, mã xem Gemfile.lock của bạn và thấy rằng những gì bạn thực sự muốn là activesupport 3.1.0, nhưng nó không thể tải một phiên bản cũ trên đầu trang của một phiên bản mới, do đó, nó treo với lỗi James Lin dán. Đây là lý do tại sao, nếu bạn đang sử dụng rvm, bạn nên giữ các viên đá riêng biệt cho các dự án riêng biệt của bạn, và xóa/tạo lại các viên đá quý nếu bạn đang cập nhật đá quý trên dự án đó để bạn không ' giữ phiên bản cũ của đá quý xung quanh. Ngoài ra, bundle exec cũng có xu hướng giải quyết 99% vấn đề. Nếu bạn không sử dụng rvm, và có nhiều dự án, thì có thể bạn có nhiều phiên bản khác nhau của nhiều loại đá quý khác nhau và bạn nên luôn sử dụng bundle exec để thực hiện những việc như thực hiện các tác vụ cào, chạy các tính năng cucumer và các bài kiểm tra đơn vị khác, v.v.

+1

Cảm ơn bạn đã chạy dưa chuột gói exec đã hoạt động! –

+0

Bạn có thể giải thích sự khác biệt giữa "dưa chuột" và "dưa chuột bó hành" không? – coelhudo

+0

@coelhudo Tôi đặt phần giải thích vào cuối câu trả lời của tôi :) – nzifnab

3

Hoặc bạn có thể làm bundle update để đảm bảo tất cả các plugin đá quý của bạn là phiên bản mới nhất và nó sẽ cập nhật Gemfile.lock của bạn, vì vậy cả hai sẽ nhất quán.

Tôi đoán sự khác biệt giữa bundle execbundle update là bạn có muốn gói cung cấp phiên bản ứng dụng yêu cầu hoặc cập nhật gemfile ứng dụng của bạn để ứng dụng không nhấn mạnh phiên bản đá quý cũ khi phiên bản mới được cài đặt và gây ra sự cố không tệp gem.

Bởi vì khi một cuộc xung đột phiên bản xảy ra, nó thường là một ý tưởng tốt để đảm bảo những gì được cài đặt trong hệ thống bạn môi trường phù hợp với ứng dụng của bạn Gemfile hoặc file khóa như bạn không muốn họ cố gắng sử dụng một phiên bản cũ của đá quý khi Phiên bản mới hơn có sẵn, trừ khi bạn muốn đóng băng hệ thống đá quý bằng cách sử dụng rvm hoặc tương tự ở cấp ứng dụng, nhưng một lần nữa, khi bạn phân phối ứng dụng ruby, nó có thể gây ra sự cố trong các máy khác. Cuối cùng, vì cần phân phối ứng dụng của bạn, trừ khi phiên bản mới hơn của tệp gem không hoạt động với ứng dụng hiện có, tôi nghĩ rằng nó không nên nhấn mạnh vào phiên bản đã biết cũ, trừ khi bạn luôn muốn giữ nó ở bên an toàn là một đối số hợp lệ.

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