ste*_*eel 52 rspec ruby-on-rails rspec-rails ruby-on-rails-5
将Rails应用程序升级到Rails 5后,运行RSpec测试会出现以下错误:
rails aborted!
ActiveRecord::NoEnvironmentInSchemaError:
Environment data not found in the schema. To resolve this issue, run:
bin/rails db:environment:set RAILS_ENV=test
Run Code Online (Sandbox Code Playgroud)
但是,这bin不存在,我似乎无法使用bundle binstubs rails或生成它rake rails:update:bin.
我也尝试过:
rails db:environment:set RAILS_ENV=test
rake db:environment:set RAILS_ENV=test
Run Code Online (Sandbox Code Playgroud)
有在Github上一个相关的问题在这里.
我该如何解决这个错误?
ste*_*eel 63
New Rails 5命令生成binstubs:
rails app:update:bin
Run Code Online (Sandbox Code Playgroud)
允许我按照建议的错误运行解决方案:
bin/rails db:environment:set RAILS_ENV=test
Run Code Online (Sandbox Code Playgroud)
来自@max评论提示:如果您正在使用database_cleaner并且此错误不断弹出,请将您的配置更改为:
DatabaseCleaner.clean_with(
:truncation,
except: %w(ar_internal_metadata)
)
Run Code Online (Sandbox Code Playgroud)
解决詹金斯你放下你应该执行数据库之前db:environment:set用|| true,因此命令不会中止:
bin/rails db:environment:set RAILS_ENV=test || true
Run Code Online (Sandbox Code Playgroud)
小智 6
所有上述答案都是正确的,但是,如果您处于一个更独特的项目中,例如开发具有模式概念的rails引擎(hacky,我知道),并且由于某种原因您的迁移失败,您可以重新运行它没有抛出此异常的检查.例:
rake environment db:{drop,create,migrate} DISABLE_DATABASE_ENVIRONMENT_CHECK=1
小智 5
对我来说,我必须做一些事情:
bin/rails db:environment:set RAILS_ENV=test
bin/rails db:migrate RAILS_ENV=test
Run Code Online (Sandbox Code Playgroud)
这将使事情正常进行,然后我必须检查我的迁移,我在关系中添加了一个 null:false ,这增加了一个错误,迁移被取消并且没有完成
| 归档时间: |
|
| 查看次数: |
20481 次 |
| 最近记录: |