How to resolve a gem dependency conflict after installing email_spec
我只是根据自述文件中的说明安装了与rspec一起使用的email-spec。现在,当我尝试运行测试时(即使未在规范中使用电子邮件规范的方法),也会收到此错误:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | $ rspec spec Neither Pony nor ActionMailer appear to be loaded so email-spec is requiring ActionMailer. WARN: Unresolved specs during Gem::Specification.reset: launchy (~> 2.1) builder (~> 3.1) WARN: Clearing out unresolved specs. Please report a bug if this causes problems. /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/bundler-1.7.4/lib/bundler/runtime.rb:34:in `block in setup': You have already activated minitest 5.4.0, but your Gemfile requires minitest 4.7.5. Prepending `bundle exec` to your command may solve this. (Gem::LoadError) from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/bundler-1.7.4/lib/bundler/runtime.rb:19:in `setup' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/bundler-1.7.4/lib/bundler.rb:121:in `setup' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/bundler-1.7.4/lib/bundler/setup.rb:7:in `<top (required)>' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:128:in `require' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:128:in `rescue in require' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:39:in `require' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `block in require' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:232:in `load_dependency' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `require' from /Users/jpalmieri/workspace/blocitoff/config/boot.rb:4:in `<top (required)>' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:121:in `require' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:121:in `require' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `block in require' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:232:in `load_dependency' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `require' from /Users/jpalmieri/workspace/blocitoff/config/application.rb:1:in `<top (required)>' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:121:in `require' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:121:in `require' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `block in require' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:232:in `load_dependency' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `require' from /Users/jpalmieri/workspace/blocitoff/config/environment.rb:2:in `<top (required)>' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:121:in `require' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:121:in `require' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `block in require' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:232:in `load_dependency' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `require' from /Users/jpalmieri/workspace/blocitoff/spec/rails_helper.rb:4:in `<top (required)>' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:121:in `require' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:121:in `require' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `block in require' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:232:in `load_dependency' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `require' from /Users/jpalmieri/workspace/blocitoff/spec/features/mark_todo_complete_spec.rb:1:in `<top (required)>' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:241:in `load' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:241:in `block in load' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:232:in `load_dependency' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:241:in `load' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in `block in load_spec_files' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in `each' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in `load_spec_files' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:96:in `setup' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:84:in `run' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:69:in `run' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:37:in `invoke' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/rspec-core-3.1.7/exe/rspec:4:in `<top (required)>' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/bin/rspec:23:in `load' from /Users/jpalmieri/.rbenv/versions/2.0.0-p353/bin/rspec:23:in `<main>' |
预先设置
这是我的Gemfile。我没有明确地调用minitest,所以我假设它是email_spec和其他东西的依赖项。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | source 'https://rubygems.org' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '4.0.10' gem 'devise' gem 'figaro', '1.0' gem 'bootstrap-sass', '~> 3.3.1' gem 'timecop' gem 'pundit' group :development, :test do gem 'rspec-rails' gem 'capybara' end # Use sqlite3 as the database for Active Record group :production do gem 'pg' gem 'rails_12factor' end group :development do gem 'sqlite3' end group :test do gem 'factory_girl_rails', '~> 4.0' gem 'database_cleaner' gem 'email_spec' end # Use SCSS for stylesheets gem 'sass-rails', '~> 4.0.2' # Use Uglifier as compressor for JavaScript assets gem 'uglifier', '>= 1.3.0' # Use CoffeeScript for .js.coffee assets and views gem 'coffee-rails', '~> 4.0.0' # See https://github.com/sstephenson/execjs#readme for more supported runtimes # gem 'therubyracer', platforms: :ruby # Use jquery as the JavaScript library gem 'jquery-rails' # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks gem 'turbolinks' # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder gem 'jbuilder', '~> 1.2' group :doc do # bundle exec rake doc:rails generates the API under doc/api. gem 'sdoc', require: false end # Use ActiveModel has_secure_password # gem 'bcrypt', '~> 3.1.7' # Use unicorn as the app server # gem 'unicorn' # Use Capistrano for deployment # gem 'capistrano', group: :development # Use debugger # gem 'debugger', group: [:development, :test] |
我尝试通过将
1 2 3 4 5 6 | group :test do gem 'factory_girl_rails', '~> 4.0' gem 'database_cleaner' gem 'email_spec' gem 'minitest', '~> 4.7.5' end |
我的问题是:
1)我以前从来不需要加
2)如果对问题1回答"是",我该怎么做?
之所以会这样,是因为Gem在其依赖项中指定了MiniTest的较旧版本,并且您在系统上安装了较新的版本。
使用
When running an executable, ALWAYS use bundle exec [command]. Quoting from the bundler documentation: In some cases, running executables without bundle exec may work, if the executable happens to be installed in your system and does not pull in any gems that conflict with your bundle. However, this is unreliable and is the source of considerable pain.
http://yehudakatz.com/2011/05/30/gem-versioning-and-bundler-doing-it-right/