Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何检查ActiveRecord使用的数据库名称_Ruby On Rails_Ruby_Configuration - Fatal编程技术网

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

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配置[“开发”][“数据库”] 要借助

在database.yml中定义所有设置。如何从ruby访问这些设置?我在
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]