对于Rails,如何访问或打印配置变量(作为实验或测试/调试)

nop*_*ole 41 ruby-on-rails ruby-on-rails-3

例如,在config/environments/production.rbRails 3应用程序中,有

config.serve_static_assets = false
Run Code Online (Sandbox Code Playgroud)

和许多变量.它们如何作为一个整体打印出来(可能在一个对象中,而不是一个一个地指定)(在视图中打印出来,比如FooController #index),只是为了查看可用的值的类型并看看他们的目标是什么?

此外,如何打印出的值.yml的文件(如哈希和/或在一些配置对象?)和config/initializers,如

MyAppFoo::Application.config.session_store :active_record_store
Run Code Online (Sandbox Code Playgroud)

我发现我们可以打印出来的内容

ActiveRecord::Base.configurations
Run Code Online (Sandbox Code Playgroud)

但不是

ActionController::Base.configurations
Run Code Online (Sandbox Code Playgroud)

有没有办法打印出MVC组件的所有信息?

idl*_*ers 64

大多数Rails配置可以通过以下方式访问:

Rails.application.config.<your_variable>
Run Code Online (Sandbox Code Playgroud)

关于在config中打印出.yml文件的值,你必须自己这样做,因为Rails只会加载当前环境的值database.yml,并且任何自定义yml配置文件都只是 - 自定义.这是你可以加载它们的一种方法......

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

关于在初始化程序中设置的设置,如果它是Rails配置选项(例如您作为示例给出的会话存储),那么它将可用Rails.application.config.如果没有,(例如gem的配置)那么你将不得不从gem类中手动找到这些设置.


Den*_*nis 5

您还可以使用AppName::Application.configAppName应用程序的名称在哪里)访问该Rails::Application::Configuration对象。

$ AppName::Application.config == Rails.application.config
true
Run Code Online (Sandbox Code Playgroud)