rails 튜토리얼 비디오를 따르고 있는데 db:test:prepare
명령이 실제로 무엇을하는지 알 수 없습니다 . 누군가 설명을 제공 할 수 있습니까?
답변
위의 rake db : migrate는 개발 환경에서 보류중인 마이그레이션을 실행하고 db / schema.rb를 업데이트합니다. rake db : test : load는 현재 db / schema.rb에서 테스트 데이터베이스를 다시 만듭니다. 이후 시도에서 db : test : prepare는 먼저 보류중인 마이그레이션을 확인하고 적절하게 경고하므로 먼저 db : test : prepare를 실행하는 것이 좋습니다.
-http : //guides.rubyonrails.org/testing.html
기본적으로 데이터베이스 복제를 처리하므로 테스트 데이터베이스를 업데이트하기 위해 테스트에 대해 마이그레이션을 실행할 필요가 없습니다.
답변
구체적으로 rake db:test:prepare
다음을 수행합니다.
- 보류중인 마이그레이션을 확인하고
- 테스트 스키마로드
즉, db/schema.rb
실행되지 않은 프로젝트에 존재하는 마이그레이션이 있는지 확인하기 위해 파일을 찾습니다 . 미해결 마이그레이션이 없다고 가정하면 데이터베이스를 비우고 db/schema.rb
파일 내용에 따라 다시로드 합니다.
답변
레이크 dB : 테스트 : 준비 같은 PG 문제에 대한 좋은 솔루션 이 .
“PG :: UndefinedTable : ERROR : relation does not exist”with a correct Rails naming and convention “여기서 실행할 수 없습니다. rake db:migrate RAILS_ENV=production
예를 들어 여기서 논의 된 버그에 대한 테스트 데이터베이스를 만들 수없는 경우 : “PG undefinedtable error relation users does not exist”
이 모든 오류 “PG :: UndefinedTable : ERROR : xxxxx 관계가 없습니다.”