Ich schreibe eine Rake-Aufgabe, die einige DB-Arbeiten außerhalb von Rails / ActiveRecord ausführt.
Gibt es eine Möglichkeit, die DB-Verbindungsinformationen (Host, Benutzername, Kennwort, DB-Name) für die aktuelle Umgebung abzurufen, wie in definiert database.yml
?
Ich möchte es bekommen, damit ich es so verbinden kann ...
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̶
̶ Und was dann anders zu sein die Antwort? ̶ Vielleicht war die Antwort von Original bearbeitet. Ich sehe @ KenB Antwort.Bryans Antwort im obigen Kommentar verdient etwas mehr Aufmerksamkeit:
quelle
Gibt die Verbindungskonfiguration in einem Hash zurück:
Wie
tpett
in ihrem Kommentar bemerkt: Diese Lösung berücksichtigt das Zusammenführen der Konfiguration vondatabase.yml
und zur UmgebungsvariablenDATABASE_URL
.quelle
database.yml
Konfiguration mit derDATABASE_URL
Umgebungsvariablen verantwortlich ist.Ich denke, das ist die einfachste Lösung. Nach einigen Tests (mindestens in Rails 5.2) wird DATABASE_URL korrekt aufgelöst.
quelle
Alte Frage, aber dies war eine meiner ersten Stationen, als ich nachschaute, wie das geht, also denke ich, dass dies jemand anderem helfen könnte. Normalerweise habe ich .my.cnf-Dateien im Home-Verzeichnis. Wenn ich also das Juwel 'parseconfig' und eine ERB-Syntax in meiner Konfigurationsdatei database.yml verwende, habe ich eine dynamische Datei, in der ich mich beim Einchecken in die Quellcodeverwaltung wohlfühlen und auch die Bereitstellung vereinfachen kann (in meinem Fall). Beachten Sie auch die Liste der gängigen Sockets. Dadurch wird es einfacher, meine App auf verschiedene Betriebssysteme zu verschieben, die möglicherweise einen anderen Unix-Socket-Pfad haben.
Ref: http://effectif.com/articles/database-yml-should-be-checked-in
quelle