J'écris une tâche de râteau qui effectue un travail de base de données en dehors de Rails / ActiveRecord.
Existe-t-il un moyen d'obtenir les informations de connexion à la base de données (hôte, nom d'utilisateur, mot de passe, nom de base de données) pour l'environnement actuel tel que défini dans database.yml
?
J'aimerais l'obtenir pour pouvoir l'utiliser pour me connecter comme ça ...
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̶
̶ ̶t̶h̶e̶n̶ ̶w̶h̶a̶t̶ ̶t̶o̶ ̶n̶e̶ ̶difefefer. Je vois la réponse de @KenB.La réponse de Bryan dans le commentaire ci-dessus mérite un peu plus de visibilité:
la source
renvoie la configuration de la connexion dans un hachage:
Comme
tpett
remarqué dans leur commentaire: cette solution prend en compte la fusion de la configuration depuisdatabase.yml
et depuis la variable d'environnementDATABASE_URL
.la source
database.yml
configuration avec laDATABASE_URL
variable d'environnement.Je pense que c'est la solution la plus simple. Après quelques tests (dans Rails 5.2 au moins), cela résoudra DATABASE_URL correctement.
la source
Ancienne question, mais c'était l'un de mes premiers arrêts pour chercher comment faire cela, alors je suppose que cela peut aider quelqu'un d'autre. J'ai normalement des fichiers .my.cnf dans le répertoire personnel. Donc, en utilisant le gem 'parseconfig' et une certaine syntaxe ERB dans mon fichier de configuration database.yml signifie que j'ai un fichier dynamique que je peux me sentir bien pour vérifier dans le contrôle de code source et également simplifier les déploiements (dans mon cas). Notez également la liste des sockets communs, cela facilite le déplacement de mon application vers différents systèmes d'exploitation pouvant avoir un chemin de socket Unix différent.
réf: http://effectif.com/articles/database-yml-should-be-checked-in
la source