Ruby on rails 如何检查ActiveRecord使用的数据库名称
在database.yml中定义所有设置。如何从ruby访问这些设置?我在Ruby on rails 如何检查ActiveRecord使用的数据库名称,ruby-on-rails,ruby,configuration,Ruby On Rails,Ruby,Configuration,在database.yml中定义所有设置。如何从ruby访问这些设置?我在App::Application::config中查找过,但在那里找不到它。另外,我记得人们可以在没有yaml的情况下配置数据库设置,有人知道如何配置吗?Rails.configuration.database\u configuration 这将为您提供一个哈希表,其中包含每个环境的配置。例如,要获取您的开发数据库名称: Rails.configuration.database\u配置[“开发”][“数据库”] 要借助
App::Application::config
中查找过,但在那里找不到它。另外,我记得人们可以在没有yaml的情况下配置数据库设置,有人知道如何配置吗?Rails.configuration.database\u configuration
这将为您提供一个哈希表,其中包含每个环境的配置。例如,要获取您的开发数据库名称:
Rails.configuration.database\u配置[“开发”][“数据库”]
要借助tsherif的注释,您可以在Rails控制台(Rails c)内运行Rails.configuration命令以获取数据库名称。在Rails 4.2中,您可以执行以下操作:
ActiveRecord::Base.connection.current_database
您还可以向特定模型询问其数据库(因为每个模型可以使用不同的数据库):
获取更多信息的另一种方法是使用特定于数据库的连接信息方法。例如,如果您使用的是postgresql,则可以通过以下方式获取当前数据库连接的详细信息:
ActiveRecord::Base.connection.raw_connection.conninfo_hash
这将提供更多的连接详细信息,而不仅仅是与默认值不同的连接详细信息。如果要获取数据库名称以便在bash或shell脚本中使用,请使用以下选项:
db_name=“$(bundle exec rails runner”放置ActiveRecord::Base.connection.current_数据库”)“
自从Rails 6.1以来,您必须使用ActiveRecord::Base.connection\u db\u config
。因此,您可以访问其他类方法,如database()
要获取当前数据库配置:
Rails.configuration.database\u configuration[Rails.env]
当我尝试输入您的命令时,会出现以下错误:“Rails.configuration.database\u configuration[development][database]:command not found”-知道原因吗?如果有人在您的代码库中添加以下内容,数据库配置不会为您提供正在使用的数据库:ActiveRecord::Base.connection.execute(“USE bleh”)
这将:ActiveRecord::Base.connection.current\u数据库
自Rails 6.1以来,此答案已被弃用。我通过一种新的方式解释了如何实际运行重置,您可以使用heroku pg:reset DATABASE_URL,然后按照提示进行操作。这也是一个更好的答案,因为简单的ActiveRecord::Base.connection.execute(“use bleh”)
会使从数据库配置中读取变得毫无意义。User.connection.config
在我的情况下似乎也能工作,还可以在Rails 3.2中执行ActiveRecord::Base.connection.current_数据库
ActiveRecord::Base.connection.raw_connection.conninfo_hash
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]