78

database.yml ですべての設定を定義します。Rubyからこれらの設定にアクセスするにはどうすればよいですか? を調べましたがApp::Application::config、そこにはありません。また、yaml なしでデータベース設定を構成できたのを覚えていますが、方法を知っている人はいますか?

4

6 に答える 6

111
Rails.configuration.database_configuration

これにより、各環境の構成を含むハッシュ テーブルが得られます。たとえば、開発データベース名を取得するには:

Rails.configuration.database_configuration["development"]["database"]
于 2012-04-03T21:27:30.093 に答える
81

Rails 4.2 では、これを行うことができます。

ActiveRecord::Base.connection.current_database

特定のモデルにデータベースを要求することもできます (モデルごとに異なるデータベースを使用できるため)。

User.connection.current_database
于 2016-11-04T15:45:04.710 に答える
7

Rails 6.1 以降では、 を使用する必要がありますActiveRecord::Base.connection_db_config。したがって、 などの他のクラス メソッドにアクセスできますdatabase()

db_config = ActiveRecord::Base.connection_db_config
print db_config.database
# main available methods: [:host, :schema_cache_path, :migrations_paths, :config, :database, :_database=, :checkout_timeout, :reaping_frequency, :idle_timeout, :replica?, :configuration_hash, :adapter, :pool]
于 2021-03-22T15:24:00.880 に答える
2

tsherif からのコメントに便乗するには、Rails コンソール (rails c) 内で Rails.configuration コマンドを実行して、データベース名を取得します。

于 2016-08-16T00:59:41.293 に答える
2

bash またはシェル スクリプト内で使用するデータベース名を取得する場合は、次を使用します。

db_name="$(bundle exec rails runner "puts ActiveRecord::Base.connection.current_database")"
于 2020-12-02T23:02:30.720 に答える