ruby-on-rails - tutorial - rspec with rails
Rails 5, Rspec: datos de entorno no encontrados en el esquema (6)
Nuevo comando de Rails 5 para generar binstubs:
rails app:update:bin
Me permite ejecutar la solución como sugiere el error:
bin/rails db:environment:set RAILS_ENV=test
Consejo de @max comment: Si está utilizando database_cleaner
y este error sigue apareciendo, cambie su configuración a:
DatabaseCleaner.clean_with(
:truncation,
except: %w(ar_internal_metadata)
)
Después de actualizar una aplicación de Rails a Rails 5, ejecutar las pruebas de RSpec me da el siguiente error:
rails aborted!
ActiveRecord::NoEnvironmentInSchemaError:
Environment data not found in the schema. To resolve this issue, run:
bin/rails db:environment:set RAILS_ENV=test
Sin embargo, ese bin
no existe y parece que no puedo generarlo con bundle binstubs rails
o con rake rails:update:bin
.
También he intentado:
rails db:environment:set RAILS_ENV=test
rake db:environment:set RAILS_ENV=test
Hay un problema relacionado en Github here .
¿Cómo puedo solucionar este error?
Para mí, este error fue seguido por uno similar que solicita una migración.
Esto hizo el truco: rails db:migrate RAILS_ENV=test
Para mí, tuve que hacer una mezcla de cosas:
bin/rails db:environment:set RAILS_ENV=test
bin/rails db:migrate RAILS_ENV=test
Esto haría que las cosas funcionen, y luego tuve que revisar mis migraciones, estaba agregando un nulo: falso en una relación y eso agregó un error, la migración se canceló y no terminó
Todas las respuestas anteriores son correctas, sin embargo, si está en un proyecto más único, como desarrollar un motor de rieles con un concepto de esquema (jacky, lo sé) y su migración falla por alguna razón, puede volver a ejecutar sin el cheque que arroja esta excepción. Ejemplo:
rake environment db:{drop,create,migrate} DISABLE_DATABASE_ENVIRONMENT_CHECK=1
Tuve que soltar mi base de datos para realizar pruebas y volver a crearla:
-
psql
-
DROP DATABASE your_db_name_test;
-
bundle exec rake db:create RAILS_ENV=test
Después de eso, el bin/rails db:environment:set RAILS_ENV=test
advertencia bin/rails db:environment:set RAILS_ENV=test
desapareció.
corregir jenkins antes de soltar la base de datos debe ejecutar db:environment:set
con || true
|| true
, por lo que el comando no aborta:
bin/rails db:environment:set RAILS_ENV=test || true