Подтвердить что ты не робот

Отображение имен хостов и баз данных в Rails

Я хочу отобразить текущие имена узлов и баз данных в представлении.

Где я могу получить эти имена?

Есть ли какая-либо предопределенная среда или глобальные переменные?

4b9b3361

Ответ 1

Вы можете создать объект конфигурации рельсов и получить от него необходимую информацию:

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

Подробнее см. документация для Rails:: Конфигурация.

Ответ 2

С Rails 3 вы можете использовать

Rails.configuration.database_configuration[Rails.env]

или

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

или

ActiveRecord::Base.connection_config

Ответ 3

Запрос 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.

Ответ 4

В Rails 3 это наиболее легко доступно через Rails::Application.config, например:

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

Если вы попытаетесь вызвать его непосредственно на Rails вместо YourApplicationClassName, рельсы выдадут вам предупреждение о дебекации. Если вы не знаете, что такое константа вашего приложения, попробуйте Rails.application.class.name в консоли Rails для вашего приложения.

Ответ 5

Ниже приведен метод, когда вы подключены к нескольким базам данных. Протестировано на Sqlite3 и Mysql2

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

Ответ 6

Протестировано в консоли Rails:

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

следующая информация должна отсутствовать: адаптер, хост, кодирование, повторное подключение, имя базы данных, имя пользователя, пароль