Respostas:
O rake db: migrate acima executa as migrações pendentes no ambiente de desenvolvimento e atualiza o db / schema.rb. O rake db: test: load recria o banco de dados de teste do db / schema.rb atual. Nas tentativas subseqüentes, é uma boa idéia executar o db: test: prepare, pois ele primeiro verifica se há migrações pendentes e o avisa adequadamente.
- http://guides.rubyonrails.org/testing.html
Basicamente, ele lida com a clonagem do banco de dados, para que você não precise executar as migrações no teste para atualizar o banco de dados de teste.
Especificamente, rake db:test:prepare
fará o seguinte:
Ou seja, ele procurará no seu db/schema.rb
arquivo para determinar se alguma migração existente no seu projeto não foi executada. Supondo que não haja migrações pendentes, ele esvaziará o banco de dados e o recarregará com base no conteúdo do db/schema.rb
arquivo.
rake db: test: prepare é uma boa solução para problemas de PG como este .
“PG :: UndefinedTable: ERROR: relacionamento não existe” com uma nomenclatura e convenção corretas do Rails "onde eu não poderia simplesmente executar rake db:migrate RAILS_ENV=production
Quando, por exemplo, você não pode criar um banco de dados de teste para um bug discutido aqui : "O PG indefinível tabela de erros de usuários não existe"
Todos apresentam esse erro "PG :: UndefinedTable: ERRO: a relação xxxxx não existe"
rake db:test:prepare
agora está obsoleto.