Estoy escribiendo una tarea de rastrillo que hace algún trabajo de base de datos fuera de Rails / ActiveRecord.
¿Hay alguna manera de obtener la información de conexión de la base de datos (host, nombre de usuario, contraseña, nombre de la base de datos) para el entorno actual como se define en database.yml
?
Me gustaría obtenerlo para poder usarlo para conectarme así ...
con = Mysql.real_connect("host", "user", "pw", "current_db")
Rails.configuration
̶R̶a̶i̶l̶s̶.̶c̶o̶n̶f̶i̶g̶u̶r̶a̶t̶i̶o̶n̶
̶ entonces qué ser diferente de la respuesta? ̶ Tal vez la respuesta fue corregida de originales. Veo @KenB respuesta.La respuesta de Bryan en el comentario anterior merece un poco más de exposición:
fuente
devuelve la configuración de conexión en un hash:
Como se
tpett
comentó en su comentario: esta solución representa la fusión de la configuración desdedatabase.yml
y desde la variable de entornoDATABASE_URL
.fuente
database.yml
configuración con laDATABASE_URL
variable de entorno.Creo que esta es la solución más simple. Después de algunas pruebas (en Rails 5.2 al menos), esto resolverá DATABASE_URL correctamente.
fuente
Antigua pregunta, pero esta fue una de mis primeras paradas para buscar cómo hacer esto, así que creo que esto puede ayudar a alguien más. Normalmente tengo archivos .my.cnf en el directorio de inicio. Entonces, usar la gema 'parseconfig' y alguna sintaxis de ERB en mi archivo de configuración database.yml significa que tengo un archivo dinámico que puedo sentir bien al registrar el control de origen y también simplificar las implementaciones (en mi caso). También tenga en cuenta la lista de sockets comunes, esto hace que sea más fácil mover mi aplicación a diferentes sistemas operativos que pueden tener una ruta de socket Unix diferente.
ref: http://effectif.com/articles/database-yml-should-be-checked-in
fuente