2011-06-16 30 views
6

Después de implementar una aplicación de Heroku, tengo problemas para llenar la base de datos con algunos de los datos que necesito allí. Ejecuté heroku rake db: populate y creó el usuario administrador inicial, pero no pude incluir el resto de los datos.Rails Heroku Database Población

Estoy llenando la base de datos con archivos de mi disco local. Sospecho que el problema se debe a que no ve nada en el directorio enumerado en el archivo sample_data.rake, como está en mi disco duro y no en el servidor. ¿Cómo puedo evitar esto?

Me imagino que tengo que alojar todos los archivos y cambiar el directorio al directorio de servidores, o encontrar una forma de evitar esto. ¿Supongo que hay una manera fácil de mover la base de datos de mi computadora a Heroku? Obviamente soy bastante nuevo en esto.

Gracias!

+0

No es realmente una respuesta, pero ¿ha pensado en utilizar datos semilla en lugar de cargar datos desde el disco local? Consulte el archivo 'db/seeds.rb' y la tarea' rake db: seed' –

Respuesta

9

Si usted tiene una base de datos local limpio (es decir, justo lo bueno, no hay datos de las pruebas de tonto), entonces usted podría intentar heroku db:push:

db:push [<database_url>] # empujan una base de datos local en la base de datos remota de la aplicación

Y recuerde desarrollar en PostgreSQL si va a utilizar las bases de datos dedicadas o compartidas de Heroku, utilizando la misma base de datos y la misma versión (versión 8.3 para compartida, 9.0 para dedicado) en sus entornos de desarrollo y producción le ahorrará mucho dolor, sufrimiento y confusión.

Referencias:

+1

¿Qué sucede si solo desea cargar una sola tabla o agregar datos a una tabla existente? –

+1

@B Seven: 'heroku help db: push' le dirá cómo. –

+0

Gracias mu, no hay ninguna forma de tenerlo emitir enunciados de actualización en lugar de una manta que reemplace la tabla está ahí? (Aparte de usar psql) –

3

que la configuración db desarrollo, y lo empuja al Heroku.

rake db:reset 
rake db:seed 
heroku rake db:push 

Si está utilizando el valor por defecto de PostgreSQL, otra opción es

heroku pg:reset 
heroku rake db:seed

utilizo el siguiente en el archivo seed.rb:

require 'pathname' 
RailsRoot = Pathname.new(RAILS_ROOT).expand_path 

print "Loading data..." 
fileData = File.read (RailsRoot + "db/data-file.csv")
+1

todos los comandos 'heroku db:' ahora son 'heroku pg:' – ahnbizcad

12

comandos heroku han cambiado. A estas alturas debería ser:


heroku run rake db:push 
heroku pg:reset DATABASE 
heroku run rake db:seed 

también los datos de base de datos local se pueden subir a heroku mediante la instalación de grifos joya y empujando db datos de PostgreSQL local.

gem install taps 
heroku db:push