ruby-on-rails 在Rails中显示主机和数据库名称

5rgfhyps  于 2023-06-25  发布在  Ruby
关注(0)|答案(8)|浏览(150)

我想在视图中显示当前主机和数据库名称。
我在哪里可以得到这些名字?
是否存在预定义的环境或全局变量?

hi3rlvi2

hi3rlvi21#

在Rails 3中,您可以使用

Rails.configuration.database_configuration[Rails.env]

Rails.application.config.database_configuration[Rails.env]

ActiveRecord::Base.connection_config
m3eecexj

m3eecexj2#

Rails::configuration.new答案在Rails 3中不起作用

config   = Rails::Configuration.new
NoMethodError: undefined method `new' for Rails::Configuration:Module
[...]

如果你使用的是MySQL或Postgres,那么这个方法就可以了

ActiveRecord::Base.connection.current_database

但这只适用于已实现该方法的驱动程序。例如,它不适用于SQLite。

dffbzjpn

dffbzjpn3#

您可以创建一个rails配置对象并从中获取必要的信息:

config   = Rails::Configuration.new
host     = config.database_configuration[RAILS_ENV]["host"]
database = config.database_configuration[RAILS_ENV]["database"]

有关详细信息,请参阅documentation for Rails::Configuration。

8i9zcol2

8i9zcol24#

在Rails 3中,通过Rails::Application.config最容易访问,如下所示:

YourApplicationClassName::Application.config.database_configuration[::Rails.env]

如果你试图直接在Rails而不是YourApplicationClassName上调用它,rails会给予你一个deperecation警告。如果你不知道你的应用程序常量是多少,可以在Rails控制台中为你的应用程序尝试Rails.application.class.name

g2ieeal7

g2ieeal75#

当您连接到多个数据库时,下面的方法很好。在Sqlite3和Mysql 2上测试

MyModel.connection.instance_variable_get(:@config)[:database]
jxct1oxe

jxct1oxe6#

在Rails控制台中测试:

ActiveRecord::Base.connection.instance_variable_get(:@config)

下一个信息应该是:适配器,主机,编码,重新连接,数据库名称,用户名,通行证

9rnv2umw

9rnv2umw7#

这应该可以工作ActiveRecord::Base.connection.database_name

ztmd8pv5

ztmd8pv58#

刚刚发现,Rails 7中的数据库配置是ActiveRecord::Base.connection_db_config
要获得名称,您可以执行ActiveRecord::Base.connection_db_config.database

相关问题