2016-07-05 29 views
31

Dopo l'aggiornamento di un applicazione Rails a Rails 5, l'esecuzione di test RSpec mi dà il seguente errore:Rails 5, Rspec: Data Environment non trovato nello schema

rails aborted! 
ActiveRecord::NoEnvironmentInSchemaError: 

Environment data not found in the schema. To resolve this issue, run: 

    bin/rails db:environment:set RAILS_ENV=test 

Tuttavia, ciò bin non esiste e posso sembra generarlo con bundle binstubs rails o con rake rails:update:bin.

Ho anche provato:

rails db:environment:set RAILS_ENV=test 
rake db:environment:set RAILS_ENV=test 

C'è un problema correlato su Github here.

Come posso risolvere questo errore?

+0

generale: questo è un terribile, cambiamento sovra-ingegnerizzato, troppo complicata.'env RAILS_ENV = {{whatever}} bin/rake db: migrate spec' usato per funzionare bene – Barry

risposta

30

Nuove Rails 5 comando per generare binstubs:

rails app:update:bin 

mi permette di eseguire la soluzione, come l'errore suggerito:

bin/rails db:environment:set RAILS_ENV=test 

Tip dal commento @Max: Se si utilizza database_cleaner e questo errore continua a spuntare quindi modificare la configurazione in:

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

Se stai usando' database_cleaner' e questo errore continua a comparire, cambia la tua configurazione in 'DatabaseCleaner.clean_with: truncation, eccetto: % w (ar_internal_metadata) '- https://github.com/DatabaseCleaner/database_cleaner/issues/445 – max

+0

omg, la soluzione db_cleaner funziona! : P non sapeva che l'env era ambientato in quel tavolo. – Frexuz

5

Per me , questo errore è stato seguito da uno simile chiedendo una migrazione.

Questo ha fatto il trucco: rails db:migrate RAILS_ENV=test

2

Per quanto mi riguarda, ho dovuto fare una miscela di cose:

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

Questo renderebbe le cose funzionano, e poi ho dovuto rivedere le mie migrazioni, ero aggiungendo un null: false in una relazione e che ha aggiunto un bug, la migrazione è stata annullata e non è stata completata

7

correzione per jenkins prima di rilasciare il database è necessario eseguire db:environment:set con || true, quindi il comando non 'T annullare:

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

ho dovuto abbandonare il mio database per i test e creare di nuovo:

  1. psql
  2. DROP DATABASE your_db_name_test;
  3. bundle exec rake db:create RAILS_ENV=test

Dopo che l'avvertimento bin/rails db:environment:set RAILS_ENV=test scomparso.

1

Tutte le risposte precedenti sono corrette, tuttavia, se si è in un progetto più unico come lo sviluppo di un motore di rotaie con un concetto di schema (hacky, lo so) e la migrazione non riesce per qualche motivo, si può ri-eseguirlo senza il controllo che genera questa eccezione. Esempio:

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

Problemi correlati