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

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

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

config.serve_static_assets = false

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

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

MyAppFoo::Application.config.session_store :active_record_store

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

ActiveRecord::Base.configurations

но не

ActionController::Base.configurations

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

4b9b3361

Ответ 1

Большинство элементов конфигурации Rails можно получить через:

Rails.application.config.<your_variable>

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

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

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

Ответ 2

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

$ AppName::Application.config == Rails.application.config
true

Ответ 3

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

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