2011-12-29 20 views
14

Estoy escribiendo un código que migrará algunos datos de una base de datos a otra, sobrescribiendo algunos datos en el destino. Utiliza ActiveRecord, ya que está asociado a una aplicación de Rails que ya usa AR.rails, activerecord, obtener la especificación de conexión actual

Como algunos datos se sobrescribirán, me gustaría proporcionar un mensaje de confirmación que indique al usuario el diccionario/especificación de conexión real utilizado para la conexión de la base de datos de destino. ya sabes, adaptador, host, nombre de usuario, contraseña, base de datos, las cosas que aparecerías en database.yml.

Puedo tomar el modelo de las cosas que estoy escribiendo y solicitar SomeModel.connection .... Pero parece que no hay ninguna API para obtener la especificación de conexión real de un objeto de conexión en vivo.

¿De verdad? ¿Me estoy perdiendo de algo? ¿Alguna otra idea, incluso api indocumentada?

Respuesta

45

Similar a la forma en que puede llamar al connection en un modelo, puede hacer una llamada al connection en ActiveRecord :: Base.

ActiveRecord::Base.connection_config 

Look at the docs for ActiveRecord::Base, ya que hay otros métodos que permiten obtener los atributos/juego sobre la conexión.

+0

Sí, sé cómo hacer esto. Me da más o menos el mismo tipo de acción que el que me proporciona algúnModelo.conexión. Prefiero llamar a algúnModelo.conexión, porque entonces sé que tengo la _derecha_ conexión en caso de que la aplicación esté utilizando diferentes modelos diferentes. Pero en cualquier caso, esta ES mi pregunta, no una respuesta a ella: no veo ninguna forma de sacar el host/puerto/base de datos/etc. del objeto devuelto por #connection. Esa ES mi pregunta. Y he visto los documentos, sí. – jrochkind

+0

Ha, está bien, aunque no respondiste mi pregunta, ME HICISTE. Supongo que no había mirado con suficiente atención a ActiveRecord :: Base, me estaba concentrando en ConnectionAdapter y tal. #connection_config es lo que quiero, y puede llamarlo a un modelo específico, SomeModel.connection_config – jrochkind

+0

Me alegro de que haya podido encontrar una solución. Cuando dijiste: 'Pero parece que no hay ninguna API para obtener la especificación de conexión real de un objeto de conexión en vivo', me interpretaron como si quisieras obtener las estadísticas de conexión sin llamarlo a una clase de modelo. Actualizaré mi respuesta para reflejar la solución adecuada. – Batkins

8

La respuesta es SomeModel.connection_config

Cuestiones relacionadas