[ruby-on-rails] rake db : test : prepare는 실제로 무엇을합니까?

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 관계가 없습니다.”


답변