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