2011-12-29 6 views
14

Sto scrivendo il codice che migra alcuni dati da un database a un altro, sovrascrivendo alcuni dati nella destinazione. Utilizza ActiveRecord, poiché è associato a un'app Rails che utilizza già AR.rails, activerecord, ottenere la specifica di connessione corrente

Poiché alcuni dati saranno sovrascritti, vorrei fornire un prompt di conferma che indichi all'utente il dizionario/specifica di connessione effettivi utilizzati per la connessione al database di destinazione. sai, adattatore, host, username, password, database, le cose che dovresti elencare in database.yml.

Posso prendere il modello per le cose che sto scrivendo e chiedere SomeModel.connection .... Ma sembra che non ci sia alcuna API per ottenere la specifica effettiva della connessione da un oggetto di connessione in tempo reale.

Davvero? Mi sto perdendo qualcosa? Altre idee, anche api prive di documenti?

risposta

45

Analogamente al modo in cui è possibile chiamare connection su un modello, è possibile effettuare una chiamata a connection su ActiveRecord :: Base.

ActiveRecord::Base.connection_config 

Look at the docs for ActiveRecord::Base, in quanto vi sono altri metodi che permettono di ottenere gli attributi/set sulla connessione.

+0

Sì, so come farlo. Mi dà all'incirca lo stesso tipo di azione che mi dà la chiamata a qualcosa diModel.connection. Preferisco chiamare qualcheModel.connection, perché poi so di avere la connessione _right_ nel caso in cui l'app ne stia utilizzando di differenti per diversi modelli. Ma in entrambi i casi, questa è la mia domanda, non una risposta - non vedo alcun modo per ottenere l'host/port/database/etc dall'oggetto restituito da #connection. Questa è la mia domanda. E ho guardato i documenti, sì. – jrochkind

+0

Ha, okay, anche se non hai risposto alla mia domanda, mi hai condotto ad esso. Immagino di non aver guardato abbastanza attentamente ActiveRecord :: Base, mi stavo concentrando su ConnectionAdapter e così via. #connection_config è quello che voglio, e puoi chiamarlo su un modello specifico, SomeModel.connection_config – jrochkind

+0

Beh, sono contento che tu sia riuscito a trovare una soluzione. Quando hai detto: "Sembra che non ci sia alcuna API per ottenere la specifica della connessione effettiva da un oggetto con connessione in tempo reale". Sono stato interpretato come se volessi ottenere le statistiche di connessione senza chiamarlo su una classe del modello. Aggiornerò la mia risposta per riflettere la soluzione corretta. – Batkins

8

La risposta è SomeModel.connection_config

Problemi correlati