Eu escrevi o
pg:pull
e pg:push
comandos. pg:pull
e pg:push
ambos usam o pg_dump
comando e canalize isso diretamente para pg_restore
(Código fonte). Infelizmente, existem problemas com pg:push,pull
no Windows no momento desta resposta, setembro de 2014. Esses problemas não são insuperáveis, portanto, se você chegar a esta resposta algum tempo depois, verifique se ela pode ter sido corrigida. O
env
comando usado aqui e aqui eu não acho que esteja no Windows, e é por isso que você está tendo que fazer as coisas PGUSER e PGPASSWORD. No entanto, o motivo do env
é que pg_dump
precisa de variáveis de ambiente diferentes de pg_restore
. Eu tentei consertar isso uma vez, usando popen para configurar os comandos de forma independente e, em seguida, conecte-os em vez de usar um pipe. No entanto, não consegui fazê-lo funcionar e tive que parar.
Eu ficaria muito feliz em revisar qualquer patch que vá até o fim e corrigir esse problema, apenas @ me mencione em um pull request para o projeto heroku/heroku.
Desculpe por não conseguir resolver este problema :(
Em vez disso, e até que isso seja corrigido, você pode usar o
pg_dump
e pg_restore
comandos separadamente, diretamente. É mais complicado como um processo de 2 etapas e ter que procurar as credenciais remotas, mas faria o trabalho. A fonte vinculada no gen_pg_*_command
métodos mostram como usar pg_dump
e pg_restore
.