我想在视图中显示当前的主机名和数据库名。
我在哪里可以获得这些名字?
是否有一些预定义的环境或全局变量?
答案 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