Rails依存しないgemなんか書いてると、設定ファイル上のキーをシンボルにで扱いたい時に悩む。わざわざ自力で再帰的にsymbolized_keys
的なものを書くのナンだし、何より設定内の「値」としてハッシュを書いてもらう場合なんかに、ちょっと嫌な感じになる(あまり良い例じゃないですが)。
name: 'test'
servers:
192.168.10.1: 'primary'
192.168.10.2: 'secondary'
config = YAML.load_file(path).my_recursive_symbolize_keys
# => {:name=>"test", :servers=>{:"192.168.10.1"=>"primary", :"192.168.10.2"=>"secondary"}}
どうしようかと軽く調べたら、YAMLファイル側でシンボルキーを書くシンタックスがあったことを今更知る。
:name: 'test'
:servers:
192.168.10.1: 'primary'
192.168.10.2: 'secondary'
これなら、予約語的なものだけをシンボルにできるし、余計な処理を読み込み時に書かなくていいし、色々解決。
config = YAML.load_file(path)
# => {:name=>"test", :servers=>{"192.168.10.1"=>"primary", "192.168.10.2"=>"secondary"}}
...なんだけど、自分ちのプロジェクト内ならとにかく、gemを使う人にこの記述を強いるのは少し抵抗がある。あまり見かけないから。
システム側で定義しているキーは「シンボルで書いて」とするのが幸せのような感じがするのですが、そうなってない理由があるのかな?と考えてみる。
- 他の言語との互換性
- この記法を扱えないyamlライブラリもあるから
- 書く人が混乱しないように
どれも理由としては弱い感じが。どうなんでしょ。