2012-05-17 138 views
11

Tengo una aplicación de Rails ejecutándose en una base de datos de postgres. Estoy configurando una cola de tareas en segundo plano que se ejecuta en la base de datos, y necesito especificar la URL de la base de datos.¿Cómo encontrar la ruta URL a una base de datos local de postgres?

Las diversas permutaciones que he intentado y esperaría todas devuelven FATAL: database "database-name" does not exist.

¿Hay algún comando que imprima esta URL?

O, lo que debería ser la URL como si mi database.yml parece que esta

development: 
    adapter: postgresql 
    encoding: unicode 
    database: db/database-name 

Gracias por las sugerencias.

+0

El enfoque clásico es inspeccionar el archivo de registro de postgres, solo para ver qué intentó el frontend. – wildplasser

+0

¿Y qué ** es ** el nombre de la base de datos en PostgreSQL? –

+0

John D, pero huele tan dulce como un caballo con cualquier otro nombre –

Respuesta

11

El formato parece ser

postgres://username:[email protected]/database 

Usted tiene una / en su nombre de base de datos y (aparentemente) postgres aceptarán / en los nombres de bases de datos, por lo que es necesario utilizar ya sea

postgres:///db/database-name 

o

postgres:///db%2Fdatabase-name 

Siéntase libre de sacar th e db/ parte del nombre de su base de datos; solo está garantizado para bases de datos como SQLite que almacenan el archivo db en un archivo local y necesitan un nombre de archivo.

+0

El camino de db era el problema. Esperaba encontrar una forma de evitar esto, ya que ya tenía datos en la base de datos. Al final, caí, recreé sin db en el nombre e importé una copia de seguridad. Funciona perfectamente. ¡Gracias! –

0

No estoy seguro de cómo está intentando acceder a la base de datos, pero si intenta crear una secuencia de comandos que utiliza la misma base de datos pero se ejecuta por separado, considere usar una secuencia de comandos que se ejecute en rieles. En Unix/Linux, si se añade esta línea:

#! script/rails runner 

a la primera línea del script y luego hacer ejecutable con:

chmod +x myscript 

a continuación, sólo se puede ejecutar con

./myscript 

y puede usar sus clases modelo al igual que su controlador y ver el código en rieles. Entonces no hay necesidad de acceder a la base de datos manualmente.

+0

gracias Michael, no, solo necesito la ruta de conexión a la base de datos. Intento incorporar queue_classic en mi aplicación https://github.com/ryandotsmith/queue_classic. –

+0

el problema al que me enfrento es mi base de datos.yml define la ruta 'db/database-name' pero el error es' FATAL: base de datos 'dbdatabase-name' does not exists' - note no slash separator after the db. Así que estoy buscando una forma de interrogar y averiguar qué camino está usando Rails. ¿Algunas ideas? –

Cuestiones relacionadas