Convert a ruby hash to dotted path
def hash_to_dotted_path(hash, path = "")
hash.each_with_object({}) do |(k, v), ret|
key = path + k.to_s
if v.is_a? Hash
ret.merge! hash_to_dotted_path(v, key.to_s + ".")
else
ret[key] = v
end
end
end
# { :level1 => { :level2 => { :level3 => 123 } } }
# to
# { "level1.level2.level3" => 123 }