hashieというgemをつかうと、Hash型を拡張して色々便利な事ができます。
mash = Hashie::Mash.new #=> {} mash.length #=> 0 mash.name #=> nil mash.name? #=> false mash.name = :shuzo_kino #=> :shuzo_kino mash.name #=> :shuzo_kino
こういうモノはデータ管理専用のクラスを作るもんだと思ってましたが。。。
断然コッチの方が楽じゃないかタマゲタなぁ…
実装をみてみると、
黒魔術でお馴染み「method_missing」を活用してアレやコレやをしているようです。
YAML等々の外部ファイルから生成
YAMLのような外部ファイルからデータを生成するのも、この通り。
# test.yml development: user: 'shuzo_kino' pass: 'pass' production: user: 'vivit_jc' pass: 'pass'
なんてYAMLファイルがあったとすると
file = Hashie::Mash.load('test.yml') #=> {"development"=>{"user"=>"shuzo_kino", "pass"=>"pass"}, "production"=>{"user"=>"vivit_jc", "pass"=>"pass"}} file.development.user #=> "shuzo_kino" file.development.user? #=> true file.development.author #=> nil
自分でパーサーを作ると、CSV等々、他のフォーマットにも対応できるそうです。
また、dotenvのような外部gemを活用するために環境変数を渡す事もできるそうで…