42 votes

Rails 5, Rspec: données d'environnement non trouvées dans le schéma

Après la mise à niveau d'une application Rails vers Rails 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, ce bin n'existe pas et je n'arrive pas à le 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 remédier à cette erreur?

48voto

steel Points 793

Nouvelle commande Rails 5 pour générer des binstubs:

 rails app:update:bin
 

Permet d’exécuter la solution selon l’erreur suggérée:

 bin/rails db:environment:set RAILS_ENV=test
 

Conseil de @max comment: Si vous utilisez database_cleaner et que cette erreur se répète, modifiez votre configuration en:

 DatabaseCleaner.clean_with(
  :truncation,
  except: %w(ar_internal_metadata)
)
 

8voto

Exsemt Points 798

corriger pour jenkins avant de supprimer la base de données, vous devez exécuter db:environment:set avec || true , de sorte que la commande n'abandonne pas:

 bin/rails db:environment:set RAILS_ENV=test || true
 

7voto

Mirror318 Points 307

Pour moi, cette erreur a été suivie par une erreur similaire demandant une migration.

Cela a fait le tour: rails db:migrate RAILS_ENV=test

3voto

Cole Jurden Points 41

Toutes les réponses ci-dessus sont correctes, cependant, si vous êtes dans un projet plus unique, tel que le développement d'un moteur de rails avec un concept de schéma (hacky, je sais) et que votre migration échoue pour une raison quelconque, vous pouvez l'exécuter à nouveau. sans le chèque qui jette cette exception. Exemple:

rake environment db:{drop,create,migrate} DISABLE_DATABASE_ENVIRONMENT_CHECK=1

2voto

Pour moi, je devais faire un mélange de choses:

 bin/rails db:environment:set RAILS_ENV=test
bin/rails db:migrate RAILS_ENV=test
 

Cela ferait fonctionner les choses, et ensuite je devais revoir mes migrations, j'ajoutais un null: false dans une relation et cela ajoutait un bogue, la migration était annulée et ne se terminait pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: