![](/img/trans.png)
[英]How do I print out the contents of an object in Rails for easy debugging?
[英]For Rails, how to access or print out config variables (as experiment or test / debugging)
例如,在 Rails 3 應用程序的config/environments/production.rb
中,有
config.serve_static_assets = false
和很多變數。 如何將它們作為一個整體打印出來(可能是在一個object中,而不是一個一個地指定每個)(在視圖中打印出來,例如FooController#index),只是為了查看可用的值類型並查看它們的設置?
此外,如何打印出.yml
文件中的值(作為 hash 和/或某些配置 object?)和config/initializers
中的值,例如
MyAppFoo::Application.config.session_store :active_record_store
我發現我們可以打印出的內容
ActiveRecord::Base.configurations
但不是
ActionController::Base.configurations
有沒有辦法打印出 MVC 組件的所有信息?
大多數Rails配置可以通過以下方式訪問:
Rails.application.config.<your_variable>
關於在config中打印出.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
。 如果沒有,(例如gem的配置)那么你將不得不從gem類中手動找到這些設置。
您還可以使用AppName::Application.config
(其中AppName
是您的應用程序的名稱)來訪問Rails::Application::Configuration
對象。
$ AppName::Application.config == Rails.application.config
true
就像idlefingers所指出的那樣,對於較新版本的rails, Rails.application.config.my_variable
可以為您提供所需的內容。
但是,如果因為你堅持使用較舊版本的Rails(2.3等)而無法使用ENV
常量,就像這樣: ENV['my_variable']
在現代(Rails 6、7)版本中,您可以這樣做
Rails.configuration.<your_variable>
因為
Rails.application.config == Rails.configuration
=> true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.