问题 LoadError:无法加载此类文件 - rspec / core / rake_task


更新:这个问题仍未解决!任何帮助表示赞赏! 2015年5月7日 更新:找到解决方法。请看我自己的答案05/09/2015

当我耙,我得到了这个错误。

AllenLins-MacBook-Pro:geoblacklight allenlin$ rake -t
Resolving dependencies...
You must `gem install bundler` and `bundle install` to run rake tasks
rake aborted!
LoadError: cannot load such file -- rspec/core/rake_task
/Users/allenlin/Documents/USpatial/geoblacklight/Rakefile:12:in `require'
/Users/allenlin/Documents/USpatial/geoblacklight/Rakefile:12:in `<top (required)>'
/Users/allenlin/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/rake_module.rb:28:in `load'
/Users/allenlin/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/rake_module.rb:28:in `load_rakefile'
/Users/allenlin/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:689:in `raw_load_rakefile'
/Users/allenlin/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:94:in `block in load_rakefile'
/Users/allenlin/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:176:in `standard_exception_handling'
/Users/allenlin/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:93:in `load_rakefile'
/Users/allenlin/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:77:in `block in run'
/Users/allenlin/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:176:in `standard_exception_handling'
/Users/allenlin/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:75:in `run'
/Users/allenlin/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-10.4.2/bin/rake:33:in `<top (required)>'
/Users/allenlin/.rbenv/versions/2.2.2/bin/rake:23:in `load'
/Users/allenlin/.rbenv/versions/2.2.2/bin/rake:23:in `<main>'

但是,我运行'gem install bundler'和'bundle install'rspec / core / rake_task实际上存在,显示为

AllenLins-MacBook-Pro:geoblacklight allenlin$ gem which rspec/core/rake_task
/Users/allenlin/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rspec-core-3.0.4/lib/rspec/core/rake_task.rb

我迷失在这里。非常感谢您对此的任何帮助!我附上了Gemfile:

source 'https://rubygems.org'

# Specify your gem's dependencies in geoblacklight.gemspec
gemspec

# If we don't specify 2.11.0 we'll end up with sprockets 2.12.0 in the main
# Gemfile.lock but since sass-rails gets generated (rails new) into the test app
# it'll want sprockets 2.11.0 and we'll have a conflict
gem 'sprockets', '2.11.0'

# If we don't specify 3.2.15 we'll end up with sass 3.3.2 in the main
# Gemfile.lock but since sass-rails gets generated (rails new) into the test app
# it'll want sass 3.2.0 and we'll have a conflict
gem 'sass', '~> 3.2.0'
gem 'bootstrap-sass', ">= 3.2"

group :test do
  # Peg simplecov to < 0.8 until this is resolved:
  # https://github.com/colszowka/simplecov/issues/281
  gem 'simplecov', '~> 0.7.1', require: false
  gem 'coveralls', require: false
end

更新

添加我的宝石env,如果这是有帮助的

RubyGems Environment:
  - RUBYGEMS VERSION: 2.4.5
  - RUBY VERSION: 2.2.2 (2015-04-13 patchlevel 95) [x86_64-darwin14]
  - INSTALLATION DIRECTORY: /Users/allenlin/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0
  - RUBY EXECUTABLE: /Users/allenlin/.rbenv/versions/2.2.2/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/allenlin/.rbenv/versions/2.2.2/bin
  - SPEC CACHE DIRECTORY: /Users/allenlin/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Users/allenlin/.rbenv/versions/2.2.2/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-14
  - GEM PATHS:
     - /Users/allenlin/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0
     - /Users/allenlin/.gem/ruby/2.2.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /Users/allenlin/.rbenv/versions/2.2.2/bin
     - /usr/local/Cellar/rbenv/0.4.0/libexec
     - /Users/allenlin/.rbenv/shims
     - /Applications/Postgres.app/Contents/Versions/9.3/bin
     - /Library/Frameworks/Python.framework/Versions/2.7/bin
     - /Users/allenlin/Library/Enthought/Canopy_64bit/User/bin
     - /Users/allenlin/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/bundler-1.9.6/bin
     - /Users/allenlin/gradle-1.12/bin
     - /usr/local/bin
     - /Users/allenlin/apache-maven/apache-maven-3.1.1/bin
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /opt/X11/bin
     - /usr/local/git/bin
     - /usr/texbin

12328
2018-05-08 02:15


起源

(1)此Gemfile包含多个主要源。 (2)你的Gemfile不止一次列出gem geoblacklight(> = 0)。(3)你必须 gem install bundler 和 bundle install - pangpang
@pangpang感谢您的回复!我已经更新了帖子!基本上,我不明白为什么错误和警告消息说我有多个'source'和geoblacklight。我还应该研究其他文件吗? - Allen Lin
当您按照此指令时发生了什么:“(通过使用--trace运行任务来查看完整跟踪)”? :) - Taryn East
另外 - 底部的整个文件扩展路径位。是不是只是第二次加载相同的Gemfile?这可能就是为什么你得到“两个来源”和其他两个来源的原因 - Taryn East
@TarynEast感谢您提醒我! :)请看完整的痕迹! - Allen Lin


答案:


好像跑了 bundle exec rake -t 将工作。 Per bundler.io http://bundler.io/man/bundle-exec.1.html  我建议添加bundle exec以确保我们使用当前上下文中指定的Gem。另见这篇SO帖子。 bundle exec rake是什么意思?


8
2018-05-09 14:54



-t只是添加了一个痕迹 - nikkypx


之后:sudo gem install bundler

我创建了一个Gemfile:

gem 'rake'
gem 'rspec'
gem 'kramdown'

并做了捆绑安装。现在我没有得到错误。


6
2017-12-07 22:18





假设您的Gemfile中确实有rspec,如果您收到此错误,则表示您没有使用应用程序所需的正确gem运行rake(使用 bundle exec rake 从您的应用程序的根目录解决),或者您的rspec核心gem尚未安装。

如果跑完了 bundle install,运行时仍然会出现相同的错误 bundle exec rake,检查你是否真的安装了“测试模式”宝石。这发生在我身上。

在我的情况下,我没有安装我的测试宝石,因为Bundler通过记住传递给它的先前参数表现出非常规行为 --without 选项 如此处所述,所以你可能认为你在运行时安装了所有的宝石 bundle install 但你实际上可能正在运行(例如......) --without development test 同样也不知道。

检查“未安装组开发和测试中的宝石”之类的内容。在你的结尾 bundle install 输出。

要重置捆绑选项,只需删除您的 ./.bundle 迪尔(所以... rm -r ./.bundle)。现在 bundle install 将恢复正常,耙应该工作。


1
2018-06-15 19:57





在生产环境中

会发生什么, capistrano 配置为仅安装gem bundle production 组(如在Gemfile中)。所以它运行bundle命令就像 bundle install --without development test

想验证?

bundle install 在生产环境中的项目目录中的命令,您将看到以下内容

Using devise 4.2.0
Using activeadmin 1.0.0.pre4
Using responsive_active_admin 0.0.5
Bundle complete! 60 Gemfile dependencies, 133 gems now installed.
Gems in the groups development and test were not installed.
Bundled gems are installed into /path/to/your/app/production/shared/bundle.

请注意 (未安装组开发和测试中的宝石。)。

您可能还记得您已指定 rspec-rails 要安装的宝石 development 仅模式。


试着指定 RAILS_ENV 喜欢

# For Rails 5.0 +
RAILS_ENV=production bundle exec rails -T

# or 

RAILS_ENV=production bundle exec rake -T

# but this may not work
bundle exec rake -T RAILS_ENV=production

1
2017-08-04 03:28