3

Rails でプログラムによってこの yaml を生成する必要があります。

foo: &foo
  x: 1
  y: 2

bar:
  <<: *foo
  z: 3

解析すると、次のハッシュが得られます。

output = {
    :foo => {
        :x => 1,
        :y => 2
    },
    :bar => {
        :x => 1,
        :y => 2,
        :z => 3
    }
}

明らかoutput.to_yamlに、拡張された構文を提供します。プログラムでアンカーとノードを使用して yml 構文を出力する方法はありますか。

4

1 に答える 1

0

イニシャライザから多くの YAML ファイルを読み取り、グローバル変数に追加する同様の機能がありました。それは次のようなものです:

APP = Hash.new
Dir.glob("#{Rails.root}/config/data/*.yml").each do |file|
  fdata = File.open(file).read
  APP.merge!(YAML::load(ERB.new(fdata).result(binding)).symbolize_keys!)
end

より具体的な解決策を書くために、あなたの問題についてもっと知る必要があります。

要点は、yaml 形式のテキストを読み取り、ハッシュを出力する YAML::load メソッドです。ERB は、解釈する必要がある erb タグが Yaml ファイルに含まれている可能性があるためです。必要な場合と必要でない場合があります。symbolize_keys! ["strings"] ではなく [:symbols] でキーにアクセスするためのものです。

于 2013-10-08T04:03:23.497 に答える