Для Rails, как получить доступ или распечатать переменные конфигурации (как эксперимент или тестирование / отладка) - PullRequest
38 голосов
/ 13 марта 2011

Например, в config/environments/production.rb в приложении Rails 3 есть

config.serve_static_assets = false

и много переменных.Как их можно распечатать как единое целое (возможно, в объекте, вместо указания каждого по отдельности) (распечатать в виде, например, FooController # index), просто чтобы посмотреть, какие типы значений доступныи посмотреть, для чего они установлены?

Кроме того, как распечатать значения в файлах .yml (в виде хэша и / или в каком-либо объекте конфигурации?) и в config/initializers, например:для

MyAppFoo::Application.config.session_store :active_record_store

Я обнаружил, что мы можем распечатать содержимое

ActiveRecord::Base.configurations

, но не

ActionController::Base.configurations

есть способы распечатать всю информацию оКомпоненты MVC?

Ответы [ 3 ]

58 голосов
/ 13 марта 2011

Большинство настроек Rails доступны через:

Rails.application.config.<your_variable>

Что касается распечатки значений файлов .yml в конфигурации, вам придется сделать это самостоятельно, поскольку Rails будет загружать только значения для текущей среды из database.yml, и любые пользовательские файлы конфигурации yml будут только это - обычай. Вот один из способов загрузить их все ...

all_configs = []
Dir[Rails.root.join("config/*.yml")].each {|f| all_configs << YAML.load_file(f) }

Что касается настроек, установленных в инициализаторах, если это опция конфигурации Rails (например, хранилище сеансов, которое вы привели в качестве примера), тогда оно будет доступно через Rails.application.config. Если нет, (например, конфигурация для драгоценного камня), то вам придется вручную найти эти настройки из классов драгоценных камней.

4 голосов
/ 12 января 2015

Вы также можете использовать AppName::Application.config (где AppName - имя вашего приложения) для доступа к объекту Rails::Application::Configuration.

$ AppName::Application.config == Rails.application.config
true
2 голосов
/ 08 февраля 2012

Как указывалось на праздных пальцах, для более новых версий рельсов Rails.application.config.my_variable должно дать вам то, что вы ищете.

Однако, если это не сработает, потому что вы застряли с более старой версией Rails (2.3 и т. Д.), Вы можете использовать константу ENV, например: ENV['my_variable']

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