ruby-on-rails - LoadError: cannot load such file -- rails_helper (Rails 6 and Rspec)
问题描述
我正在尝试为 rails 6 项目编写 rspec 测试。
当我运行时
rspec spec/controllers/user_spec.rb
出现此错误
Migrations are pending. To resolve this issue,
run:rails db:migrate RAILS_ENV=test
No examples found.
所以我跑了
rails db:migrate RAILS_ENV=test
,然后我得到了这个错误
rails aborted!
LoadError: cannot load such file -- rails_helper
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/loaded_features_index.rb:89:in `register'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:40:in `rescue in require'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:26:in `require'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/zeitwerk-2.2.1/lib/zeitwerk/kernel.rb:23:in `require'
/Users/MacBookAir/workspace/squealer/spec/factories/devise.rb:1:in `<main>'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:54:in `load'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:54:in `load'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/factory_bot-5.1.1/lib/factory_bot/find_definitions.rb:20:in `block (2 levels) in find_definitions'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/factory_bot-5.1.1/lib/factory_bot/find_definitions.rb:19:in `each'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/factory_bot-5.1.1/lib/factory_bot/find_definitions.rb:19:in `block in find_definitions'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/factory_bot-5.1.1/lib/factory_bot/find_definitions.rb:15:in `each'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/factory_bot-5.1.1/lib/factory_bot/find_definitions.rb:15:in `find_definitions'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/factory_bot-5.1.1/lib/factory_bot/reload.rb:6:in `reload'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/factory_bot_rails-5.1.1/lib/factory_bot_rails/railtie.rb:26:in `block in <class:Railtie>'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.1/lib/active_support/lazy_load_hooks.rb:69:in `block in execute_hook'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.1/lib/active_support/lazy_load_hooks.rb:62:in `with_execution_control'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.1/lib/active_support/lazy_load_hooks.rb:67:in `execute_hook'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.1/lib/active_support/lazy_load_hooks.rb:52:in `block in run_load_hooks'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.1/lib/active_support/lazy_load_hooks.rb:51:in `each'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.1/lib/active_support/lazy_load_hooks.rb:51:in `run_load_hooks'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/application/finisher.rb:129:in `block in <module:Finisher>'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/initializable.rb:32:in `instance_exec'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/initializable.rb:32:in `run'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/initializable.rb:61:in `block in run_initializers'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/initializable.rb:60:in `run_initializers'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/application.rb:363:in `initialize!'
/Users/MacBookAir/workspace/squealer/config/environment.rb:14:in `<main>'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/zeitwerk-2.2.1/lib/zeitwerk/kernel.rb:23:in `require'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.1/lib/active_support/dependencies.rb:325:in `block in require'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.1/lib/active_support/dependencies.rb:291:in `load_dependency'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.1/lib/active_support/dependencies.rb:325:in `require'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/application.rb:339:in `require_environment!'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/application.rb:515:in `block in run_tasks_blocks'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/commands/rake/rake_command.rb:23:in `block in perform'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/commands/rake/rake_command.rb:20:in `perform'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/command.rb:48:in `invoke'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/commands.rb:18:in `<main>'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.1/lib/active_support/dependencies.rb:325:in `block in require'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.1/lib/active_support/dependencies.rb:291:in `load_dependency'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.1/lib/active_support/dependencies.rb:325:in `require'
/Users/MacBookAir/workspace/squealer/bin/rails:9:in `<top (required)>'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/client/rails.rb:28:in `load'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/client/rails.rb:28:in `call'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/client/command.rb:7:in `call'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/client.rb:30:in `run'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/bin/spring:49:in `<top (required)>'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/binstub.rb:11:in `load'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/binstub.rb:11:in `<top (required)>'
/Users/MacBookAir/workspace/squealer/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Caused by:
Bootsnap::LoadPathCache::FallbackScan:
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)
然后我删除 bootsnap gem 并转到 config/boot.rb 并删除此行
require 'bootsnap/setup'
然后我运行 bundle install 然后尝试再次运行rails db:migrate RAILS_ENV=test
。
我收到另一个错误
rails aborted!
LoadError: cannot load such file -- rails_helper
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/zeitwerk-2.2.1/lib/zeitwerk/kernel.rb:23:in `require'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/zeitwerk-2.2.1/lib/zeitwerk/kernel.rb:23:in `require'
/Users/MacBookAir/workspace/squealer/spec/factories/devise.rb:1:in `<top (required)>'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/factory_bot-5.1.1/lib/factory_bot/find_definitions.rb:20:in `load'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/factory_bot-5.1.1/lib/factory_bot/find_definitions.rb:20:in `block (2 levels) in find_definitions'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/factory_bot-5.1.1/lib/factory_bot/find_definitions.rb:19:in `each'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/factory_bot-5.1.1/lib/factory_bot/find_definitions.rb:19:in `block in find_definitions'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/factory_bot-5.1.1/lib/factory_bot/find_definitions.rb:15:in `each'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/factory_bot-5.1.1/lib/factory_bot/find_definitions.rb:15:in `find_definitions'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/factory_bot-5.1.1/lib/factory_bot/reload.rb:6:in `reload'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/factory_bot_rails-5.1.1/lib/factory_bot_rails/railtie.rb:26:in `block in <class:Railtie>'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.1/lib/active_support/lazy_load_hooks.rb:69:in `block in execute_hook'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.1/lib/active_support/lazy_load_hooks.rb:62:in `with_execution_control'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.1/lib/active_support/lazy_load_hooks.rb:67:in `execute_hook'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.1/lib/active_support/lazy_load_hooks.rb:52:in `block in run_load_hooks'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.1/lib/active_support/lazy_load_hooks.rb:51:in `each'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.1/lib/active_support/lazy_load_hooks.rb:51:in `run_load_hooks'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/application/finisher.rb:129:in `block in <module:Finisher>'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/initializable.rb:32:in `instance_exec'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/initializable.rb:32:in `run'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/initializable.rb:61:in `block in run_initializers'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/initializable.rb:60:in `run_initializers'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/application.rb:363:in `initialize!'
/Users/MacBookAir/workspace/squealer/config/environment.rb:14:in `<top (required)>'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/zeitwerk-2.2.1/lib/zeitwerk/kernel.rb:23:in `require'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/zeitwerk-2.2.1/lib/zeitwerk/kernel.rb:23:in `require'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.1/lib/active_support/dependencies.rb:325:in `block in require'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.1/lib/active_support/dependencies.rb:291:in `load_dependency'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.1/lib/active_support/dependencies.rb:325:in `require'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/application.rb:339:in `require_environment!'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/application.rb:515:in `block in run_tasks_blocks'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/commands/rake/rake_command.rb:23:in `block in perform'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/commands/rake/rake_command.rb:20:in `perform'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/command.rb:48:in `invoke'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/railties-6.0.1/lib/rails/commands.rb:18:in `<top (required)>'
/Users/MacBookAir/workspace/squealer/bin/rails:9:in `require'
/Users/MacBookAir/workspace/squealer/bin/rails:9:in `<top (required)>'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/client/rails.rb:28:in `load'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/client/rails.rb:28:in `call'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/client/command.rb:7:in `call'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/client.rb:30:in `run'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/bin/spring:49:in `<top (required)>'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/binstub.rb:11:in `load'
/Users/MacBookAir/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/binstub.rb:11:in `<top (required)>'
/Users/MacBookAir/workspace/squealer/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)
在这一点上,我准备把我的笔记本电脑扔进垃圾桶。我什至不知道 zeitwerk gem 是什么,也不知道线程安全代码加载器是做什么的。我只知道 Rails 6 需要它。
我的 github 仓库在这里
有谁知道我做错了什么?
解决方案
我刚刚浏览了你的回购。你实际上没有rails_helper
文件。你应该做一个 find and replace for rails_helper
,用test_helper
推荐阅读
- intellij-idea - SBT 无法读取 IntelliJ 中的环境变量
- vue.js - 如何让 v-data-table 在 vuetify 中为 - 和 + 呈现图标?
- java - 找不到 activemq.xml 的 Spring NamespaceHandler
- c# - 当不断有多个呼叫者等待进入时,SemaphoreSlim 是否保证进入
- python - Python 请求登录后失败,页面已过期
- excel - VSTO ListObject 重命名事件
- android - 如何为日期键的 json 映射创建 gson 格式?
- javascript - 使用 VBA 脚本登录网站登录页面
- php - YouTube 数据 API 返回的结果多于 maxResults
- c# - 如何在 ModelState 中预定义键以及如何添加更多键?