ruby LoadError: 无法加载此类文件 -- rspec/core/rake_task
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/30114733/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
LoadError: cannot load such file -- rspec/core/rake_task
提问by Allen Lin
When I rake, I got this error.
当我耙时,我收到了这个错误。
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>'
However, I've run the 'gem install bundler' and 'bundle install' the rspec/core/rake_task actually exists, shown by
但是,我已经运行了 '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
I am lost here. Thanks so much for any help on this! I attached the Gemfile:
我在这里迷路了。非常感谢您对此的任何帮助!我附上了 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
Update
更新
Add my gem env if that's helpful
如果有帮助,请添加我的 gem 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
采纳答案by Allen Lin
It seems that running bundle exec rake -twill work. Per bundler.io http://bundler.io/man/bundle-exec.1.htmlI suggest adding bundle exec to ensure that we are using the Gem specified in the current context. Also see this SO post. What does bundle exec rake mean?
看来跑步bundle exec rake -t会奏效。根据 bundler.io http://bundler.io/man/bundle-exec.1.html我建议添加 bundle exec 以确保我们使用当前上下文中指定的 Gem。另请参阅此 SO 帖子。bundle exec rake 是什么意思?
回答by resultsway
After having earlier run : sudo gem install bundler
较早运行后: sudo gem install bundler
I created a Gemfile with:
我创建了一个 Gemfile:
gem 'rake'
gem 'rspec'
gem 'kramdown'
and did bundle install. Now I dont get the error.
并做了bundle install。现在我没有得到错误。
回答by djb
Assuming that you actually have rspec in your Gemfile, if you're getting this error it either means you're not running rake with the proper gems your application needs (use bundle exec rakefrom your application's root directory to solve), or that your rspec core gem has not been installed.
假设您的 Gemfile 中确实有 rspec,如果您收到此错误,则意味着您没有使用应用程序所需的适当 gem(bundle exec rake从应用程序的根目录使用来解决)运行 rake ,或者您的 rspec 核心 gem尚未安装。
If after running bundle install, you still get the same error when running bundle exec rake, check that you've actually installed your "test mode" gems. This happened to me.
如果运行后bundle install,您在运行时仍然遇到相同的错误bundle exec rake,请检查您是否实际安装了“测试模式”gems。这发生在我身上。
In my case, I had not installed my test gems because Bundler exhibits unconventional behavior by remembering the previous arguments passed to the --withoutoption as noted here, so it could be that you think you're installing all your gems when you run bundle installbut you might actually be running with (for example...) --without development testas well and not know it.
就我而言,我没有安装我的测试 gems,因为 Bundler 通过记住前面提到的传递给--without选项的参数表现出非常规行为,因此可能是您认为在运行时安装了所有 gems,但实际上您可能也正在运行(例如...)并且不知道它。bundle install--without development test
Check for something like "Gems in the groups development and test were not installed." at the end of your bundle installoutput.
检查诸如“未安装组开发和测试中的 Gems”之类的内容。在你的bundle install输出结束时。
To reset your bundle options, simply remove your ./.bundledir (so... rm -r ./.bundle). Now bundle installwill be back to normal and rake should work.
要重置您的捆绑选项,只需删除您的./.bundle目录(所以... rm -r ./.bundle)。现在bundle install将恢复正常,rake 应该可以工作了。
回答by illusionist
In Production Environment
在生产环境中
What happens is, capistranois configured to only install gem bundle in productiongroup(as in Gemfile). So it runs bundle command like bundle install --without development test.
发生的情况是,capistrano配置为仅在production组中安装 gem 包(如在 Gemfile 中)。所以它运行 bundle 命令,如bundle install --without development test.
Want to verify?
想验证?
Run bundle installcommand in project dir in Production environment, you will see following
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.
Please note (Gems in the groups development and test were not installed.).
请注意(未安装开发和测试组中的 Gems。)。
You might recall that you have specified rspec-railsgem to be installed in developmentmode only.
您可能还记得您已经指定rspec-railsgem 只安装在developmentmode 中。
Solution
解决方案
try to specify the RAILS_ENVlike
尝试指定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
回答by Ahad Yekta
I had this issue because in my gem file I did not specified the version of rspec and it got the old version. I updated my gem file to it:
我有这个问题,因为在我的 gem 文件中我没有指定 rspec 的版本,它得到了旧版本。我更新了我的 gem 文件:
gem 'rspec', '3.8.0'
gem 'rspec', '3.8.0'
and it worked!
它奏效了!

