在Rails中显示主机名和数据库名

时间:2008-11-06 00:01:57

标签: ruby-on-rails

我想在视图中显示当前的主机名和数据库名。

我在哪里可以获得这些名字?

是否有一些预定义的环境或全局变量?

7 个答案:

答案 0 :(得分:50)

使用Rails 3,您可以使用

Rails.configuration.database_configuration[Rails.env]

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

ActiveRecord::Base.connection_config

答案 1 :(得分:24)

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。

答案 2 :(得分:19)

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

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

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

答案 3 :(得分:17)

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

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

如果您尝试直接在Rails而不是YourApplicationClassName上调用它,则rails会向您发送一个detrecation警告。如果您不知道应用程序常量是什么,请在应用程序的Rails控制台中尝试Rails.application.class.name

答案 4 :(得分:7)

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

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

答案 5 :(得分:6)

在Rails控制台中测试:

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

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

答案 6 :(得分:0)

这应该可行 ActiveRecord::Base.connection.database_name