簡體   English   中英

Rails - 為 config_for 方法啟用深度合並?

[英]Rails - Enable deep merge for config_for method?

我目前正在嘗試像這樣加載 a.yml 配置文件:

settings = Rails.application.config_for(:file_name)

該文件類似於以下內容:

shared:
  variable_1:
    variable_1_a: something
    variable_1_b: something
  variable_2: example

development:
  variable_1:
    variable_1_a: something else

但是它不使用深度合並加載,而是僅加載:

settings => {
  variable_1 => {
    variable_1_a => 'something else'
  }
  variable_2 => 'example'
}

有沒有辦法在 config_for 方法中也包含“variable_1_b”?

EDIT: Apparently I am using an old version of rails since this behavior was changed in this rails 6.1+ commit: https://github.com/rails/rails/commit/4d858b3f2a70aefda741c517c2db61b4d7d4adfb#diff-84292fcaae327f1a70e7c3b1ebb55b193dea016c1118a8566930bc5cd2a51ba5

這意味着更新 rails 版本為我解決了這個問題。

我無法重現您的問題。 事實上,這在我的機器上完美運行:

./config/file_name.yml

shared:
  variable_1:
    variable_1_a: something
    variable_1_b: something
  variable_2: example

development:
  variable_1:
    variable_1_a: something else

Rails 控制台(為清楚起見添加了空格):

Rails.application.config_for(:file_name)
=> {
    :variable_1 => {
      :variable_1_a => "something else",
      :variable_1_b=>"something"
    },
    :variable_2=>"example"
  }

此外, 它的行為與 rails 文檔中描述的完全一樣

因此,我投票結束您的問題,除非您的帖子中缺少一些關鍵的附加信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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