如何检查ActiveRecord使用的数据库名称

时间:2012-04-03 21:21:08

标签: ruby-on-rails ruby configuration

在database.yml中,您可以定义所有设置。如何从ruby访问这些设置?我查看了App::Application::config,但在那里找不到它。另外,我记得有人能够在没有yaml的情况下配置数据库设置,有谁知道怎么做?

5 个答案:

答案 0 :(得分:45)

Rails.configuration.database_configuration

这将为您提供一个哈希表,其中包含每个环境的配置。例如。获取您的开发数据库名称:

Rails.configuration.database_configuration["development"]["database"]

答案 1 :(得分:45)

在Rails 4.2中,您可以这样做:

ActiveRecord::Base.connection.current_database

您也可以询问其数据库的特定模型(因为每个模型可以使用不同的数据库):

User.connection.current_database

答案 2 :(得分:1)

从 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]

答案 3 :(得分:0)

获得更多信息的另一种方法是使用特定于数据库的连接信息方法。例如,如果您使用的是postgresql,则可以通过以下方式获取当前数据库连接的详细信息:

ActiveRecord::Base.connection.raw_connection.conninfo_hash

这将提供更多的连接详细信息,不仅是那些与默认设置不同的信息。

答案 4 :(得分:0)

如果要获取要在bash或shell脚本中使用的数据库名称,请使用以下命令:

db_name="$(bundle exec rails runner "puts ActiveRecord::Base.connection.current_database")"