1. ホーム
  2. ruby-on-rails

[解決済み] RailsでDBのユーザー名、PW、データベース名を取得できますか?

2022-04-27 14:21:16

質問

Rails/ActiveRecordの外でDB作業をするrakeタスクを書いています。

で定義されている現在の環境のDB接続情報(ホスト、ユーザー名、パスワード、DB名)を取得する方法はありますか? database.yml ?

こんな風に繋いで使えるように手に入れたいんだけど...。

con = Mysql.real_connect("host", "user", "pw", "current_db")

解決方法は?

rails 内から設定オブジェクトを作成し、そこから必要な情報を取得することができます。

config   = Rails.configuration.database_configuration
host     = config[Rails.env]["host"]
database = config[Rails.env]["database"]
username = config[Rails.env]["username"]
password = config[Rails.env]["password"]

をご覧ください。 ドキュメント のRails::Configurationを使用すると、詳細がわかります。

これは単に YAML::load を使って、データベース設定ファイルから設定をロードします ( database.yml )を使って、rails環境の外から自分で情報を取得することができます。

require 'YAML'
info = YAML::load(IO.read("database.yml"))
print info["production"]["host"]
print info["production"]["database"]
...