Rails 5, Rspec: données de l'Environnement ne trouve pas dans le schéma
Après la mise à niveau d'une application Rails de Rails de 5, l'exécution des tests RSpec me donne l'erreur suivante:
rails aborted!
ActiveRecord::NoEnvironmentInSchemaError:
Environment data not found in the schema. To resolve this issue, run:
bin/rails db:environment:set RAILS_ENV=test
Cependant, que bin
n'existe pas et je n'arrive pas à générer avec bundle binstubs rails
ou avec rake rails:update:bin
.
J'ai aussi essayé:
rails db:environment:set RAILS_ENV=test
rake db:environment:set RAILS_ENV=test
Il y a un problème connexe sur Github ici.
Comment puis-je corriger cette erreur?
- En général: c'est un terrible, conçu, compliqué de changer.
env RAILS_ENV={{whatever}} bin/rake db:migrate spec
utilisé à très bien fonctionner
Vous devez vous connecter pour publier un commentaire.
Les Rails 5 commande pour générer binstubs:
Me permet d'exécuter la solution que l'erreur a suggéré:
Conseil de @max commentaire: Si vous utilisez
database_cleaner
et cette erreur ne cesse d'apparaître alors modifier la config pour:database_cleaner
et cette erreur ne cesse d'apparaître alors modifier la config pourDatabaseCleaner.clean_with :truncation, except: %w(ar_internal_metadata)
- github.com/DatabaseCleaner/database_cleaner/issues/445database_cleaner >= 1.6.2
doit avez fixe la question. Notez que si vous êtes en cours d'exécution CI des tests sur un serveur, tous les projets qui sont à construire, il devrait y avoirdatabase_cleaner >= 1.6.2
.correctif pour jenkins avant de les déposer base de données, vous devez exécuter
db:environment:set
avec|| true
, de sorte que la commande ne fonctionne pas abandonner:Pour moi, cette erreur a été suivie par une autre semblable à demander une migration.
Cela a fait le tour:
rails db:migrate RAILS_ENV=test
Toutes les réponses ci-dessus sont corrects, cependant, si vous êtes dans un unique projet, telles que le développement d'un moteur rails avec un concept de schéma (hacky, je sais) et la migration échoue pour une raison quelconque, vous pouvez ré-exécuter sans vérifier que génère cette exception. Exemple:
rake environment db:{drop,create,migrate} DISABLE_DATABASE_ENVIRONMENT_CHECK=1
Pour moi, j'ai eu à faire un mélange de choses:
Cela permettrait de faire fonctionner les choses, et puis, j'ai dû revoir mon migrations, j'étais en ajoutant une valeur null:false, dans une relation et que l'ajout d'un bug, la migration a été annulé et n'a pas fini
J'ai dû abandonner ma base de données de tests et de le créer encore une fois:
psql
DROP DATABASE your_db_name_test;
bundle exec rake db:create RAILS_ENV=test
Après que l'avertissement
bin/rails db:environment:set RAILS_ENV=test
disparu.bundle exec rake db:migrate RAILS_ENV=test