すでにハッシュを持っている場合、それを作ることができます
h[:foo]
h['foo']
同じだ? (これは無差別アクセスと呼ばれますか?)
詳細:initializers
で次を使用してこのハッシュをロードしましたが、おそらく違いはありません。
SETTINGS = YAML.load_file("#{Rails_ROOT}/config/settings.yml")
YAMLファイルをそのように書くこともできます:
--- !map:HashWithIndifferentAccess
one: 1
two: 2
その後:
SETTINGS = YAML.load_file("path/to/yaml_file")
SETTINGS[:one] # => 1
SETTINGS['one'] # => 1
通常のハッシュの代わりに HashWithIndifferentAccess を使用します。
完全を期すために、次のように書きます。
SETTINGS = HashWithIndifferentAccess.new(YAML.load_file("#{Rails_ROOT}/config/settings.yml"))
You can just make a new hash of HashWithIndifferentAccess type from your hash.
hash = { "one" => 1, "two" => 2, "three" => 3 }
=> {"one"=>1, "two"=>2, "three"=>3}
hash[:one]
=> nil
hash['one']
=> 1
make Hash obj to obj of HashWithIndifferentAccess Class.
hash = HashWithIndifferentAccess.new(hash)
hash[:one]
=> 1
hash['one']
=> 1