簡體   English   中英

對於 Rails,如何訪問或打印配置變量(作為實驗或測試/調試)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM