Отображение имен хостов и баз данных в Rails - PullRequest
40 голосов
/ 06 ноября 2008

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

Где я могу взять эти имена?

Существуют ли предопределенные среды или глобальные переменные?

Ответы [ 7 ]

50 голосов
/ 12 июля 2013

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

Rails.configuration.database_configuration[Rails.env]

или

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

или

ActiveRecord::Base.connection_config
24 голосов
/ 22 марта 2011

Ответ 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.

19 голосов
/ 06 ноября 2008

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

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

См. документацию для Rails :: Конфигурация для деталей.

17 голосов
/ 05 августа 2011

На Rails 3 к нему проще всего обратиться через Rails::Application.config, например:

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

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

7 голосов
/ 01 декабря 2011

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

MyModel.connection.instance_variable_get(:@config)[:database]
6 голосов
/ 12 ноября 2013

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

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

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

0 голосов
/ 01 октября 2018

Просто это должно работать ActiveRecord::Base.connection.database_name

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...