2012-09-11 4 views
5

Cuando mi aplicación se basa en Heroku DiceHeroku ¿Qué significa 'Escribir config/database.yml para leer de DATABASE_URL'?

Writing config/database.yml to read from DATABASE_URL 

¿Qué significa eso? ¿Es esto nuevo en la pila de cedro?

Tengo una aplicación de Rack. Mi config.ru utiliza para trabajar en chalada bambú apilar:

#!/usr/bin/ruby 
environment = ENV['DATABASE_URL'] ? 'production' : 'development' 

require './pb.rb' 

dbconfig = YAML.load(File.read('config/database.yml')) 
Pb::Models::Base.establish_connection dbconfig[environment] 
Pb.create if Pb.respond_to? :create 

run Pb 

En mi propio equipo se leería mi local de config/database.yml (que no está comprometida con control de código fuente)

development: 
    adapter: sqlite3 
    database: db/development.sqlite3 
    pool: 5 
    timeout: 5000 

Y en Heroku se leería Heroku's database.yml. Al inspeccionarlo ahora en Cedar heroku run cat config/database.yml, parece ser un archivo Ruby, y no yml. ¿Este cambio se explica en alguna parte?

Respuesta

8

Cuando inserta su aplicación en Heroku, si tiene un directorio config, Ruby build pack writes a new database.yml file, y produce el mensaje que ve cuando lo hace.

Rails runs this file through ERB when loading it, para permitir varias opciones dinámicas. Heroku hace uso de esto, produciendo un archivo ERB que lee la variable de entorno DATABASE_URL y crea el archivo apropiado .yml apuntando a esa base de datos.

Supongo que en el caso de Bamboo, el database.yml que se creó era un archivo Yaml simple que apuntaba a su base de datos (no puedo encontrar ninguna referencia).

Para que su aplicación funcione en Cedar, debe ejecutar el archivo a través de ERB de la misma manera que Rails. Cambiar esta situación:

dbconfig = YAML.load(File.read('config/database.yml')) 

a

require 'erb' 
dbconfig = YAML.load(ERB.new(File.read('config/database.yml')).result) 

Si su local de database.yml es sólo yaml llano, corriendo a través de ERB como esto debería ser un no-op, y recogerá los valores correctos en Heroku.

+0

Gracias Matt, este era exactamente el problema. –

+0

Escribí a Heroku y les pedí que actualizaran los documentos. Lo hicieron, gracias Heroku! https://devcenter.heroku.com/articles/cedar-migration#postgres –

Cuestiones relacionadas