导轨5,Rspec的:未在该架构
发现环境中的数据升级Rails应用程序后到Rails 5,运行RSpec的测试给了我以下错误:导轨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
然而,bin
不存在,我可以似乎没有生成bundle binstubs rails
或rake rails:update:bin
。
我也曾尝试:
rails db:environment:set RAILS_ENV=test
rake db:environment:set RAILS_ENV=test
有Github上here一个相关的问题。
我怎样才能解决这个问题?
新的Rails 5命令生成binstubs:
rails app:update:bin
使我能够运行解决方案的错误提示:从@Max评论
bin/rails db:environment:set RAILS_ENV=test
提示:如果您使用的是database_cleaner
这错误不断弹出,然后将您的配置更改为:
DatabaseCleaner.clean_with(
:truncation,
except: %w(ar_internal_metadata)
)
对我来说,这个错误后跟一个类似的请求迁移。
这奏效了:rails db:migrate RAILS_ENV=test
对于我来说,我不得不做的事情的混合物:
bin/rails db:environment:set RAILS_ENV=test
bin/rails db:migrate RAILS_ENV=test
这将使工作上的事情,然后我不得不审查我的迁移,我是在关系中添加null:false并添加了一个bug,迁移被取消并且没有完成
修复jenkins在删除数据库之前应执行db:environment:set
与|| true
,所以命令doesn “T中止:
bin/rails db:environment:set RAILS_ENV=test || true
我不得不放弃我的数据库测试,并重新创建它:
psql
DROP DATABASE your_db_name_test;
bundle exec rake db:create RAILS_ENV=test
之后警告bin/rails db:environment:set RAILS_ENV=test
消失了。
以上所有答案都是正确的,但是,如果你在一个更独特的项目是如发展轨道引擎架构的概念(哈克,我知道),由于某种原因迁移失败,则可以在不引发此异常的检查的情况下重新运行它。例如:
rake environment db:{drop,create,migrate} DISABLE_DATABASE_ENVIRONMENT_CHECK=1
一般:这是一个可怕的,过度设计,过度复杂的变化。'env RAILS_ENV = {{whatever}} bin/rake db:migrate spec'用于正常工作 – Barry