在 database.yml 中定义所有设置。如何从 ruby 访问这些设置?我看过了App::Application::config
,但在那里找不到。另外,我记得人们可以在没有 yaml 的情况下配置数据库设置,有人知道怎么做吗?
问问题
44886 次
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 回答
11
获得更多信息的另一种方法是使用数据库特定的连接信息方法。例如,如果您使用的是 postgresql,您可以通过以下方式获取当前数据库连接的详细信息:
ActiveRecord::Base.connection.raw_connection.conninfo_hash
这将提供更多的连接细节,而不仅仅是那些与默认值不同的细节。
于 2019-06-02T16:25:15.693 回答
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 或 shell 脚本中使用,请使用以下命令:
db_name="$(bundle exec rails runner "puts ActiveRecord::Base.connection.current_database")"
于 2020-12-02T23:02:30.720 回答