LoadError: невозможно загрузить такой файл - rspec/core/rake_task
Обновление: эта проблема все еще не решена! Любая помощь приветствуется! 05/07/2015
Обновление: обнаружено обходное решение. Пожалуйста, см. Мой собственный ответ 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 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
Обновление
Добавьте мой 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
Ответы
Ответ 1
Кажется, что работает bundle exec rake -t
будет работать. Для bundler.io http://bundler.io/man/bundle-exec.1.html Я предлагаю добавить bundle exec, чтобы убедиться, что мы используем Gem, указанный в текущем контексте. Также см. Этот пост. Что такое пакетные грабли exec?
Ответ 2
После: sudo gem install bundler
Я создал Gemfile с:
gem 'rake'
gem 'rspec'
gem 'kramdown'
и установил пакет. Теперь я не получаю ошибку.
Ответ 3
Предполагая, что у вас действительно есть rspec в вашем Gemfile, если вы получаете эту ошибку, это означает, что вы не используете грабли с соответствующими камнями, которые необходимы вашему приложению (используйте bundle exec rake
из корневого каталога вашего приложения для решения) или что ваш драгоценный камень rspec не был установлен.
Если после запуска bundle install
вы все равно получите ту же ошибку при запуске bundle exec rake
, убедитесь, что вы действительно установили свои "тестовые режимы". Это случилось со мной.
В моем случае я не установил свои тестовые камни, потому что Bundler демонстрирует нетрадиционное поведение, помня предыдущие аргументы, переданные в --without
вариант как указано здесь, поэтому возможно, вы считаете, что устанавливаете все свои драгоценные камни, когда вы запускаете bundle install
, но на самом деле вы можете работать с (например...) --without development test
и не знать этого.
Проверьте что-то вроде "Самоцветы в разработке групп и теста не были установлены". в конце вашего вывода bundle install
.
В reset параметры вашего пакета, просто удалите ваш ./.bundle
dir (так... rm -r ./.bundle
). Теперь bundle install
вернется в нормальное состояние, и грабли должны работать.
Ответ 4
В производственной среде
Что происходит, capistrano
настроен только для установки набора gem в группе 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
gem, который должен быть установлен только в 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
Ответ 5
У меня была эта проблема, потому что в моем файле gem я не указал версию rspec, и он получил старую версию.
Я обновил свой гем файл до него:
gem 'rspec', '3.8.0'
и это сработало!