ハッシュのみで構成されたyamlにメソッドの様にアクセス出来るクラスを作ってみた
階層化されたハッシュはOpenStructで対応していない様なので作ってみました
RailsのSettingsファイルの様な感じでアクセスできます
yaml_settings.rb
require 'yaml' require 'ostruct' class YamlSettings def initialize dir hash = YAML.load_file(dir) @hash = conv_hash hash @data = OpenStruct.new(@hash) end def conv_hash hash hash.inject({}) do |h, (key, val)| if hash[key].class.to_s == 'Hash' h[key.to_sym] = OpenStruct.new(conv_hash hash[key]) else h[key.to_sym] = val end h end end def data @data end end setting = YamlSettings.new("./settings.yml") setting.spread_sheet.url setting.spread_sheet.user
settings.yml
spread_sheet: url: http://hogehogehoge.com user: nitamago