在Hashie gem中将Mash的字符串转换为Hash

时间:2016-01-05 09:38:01

标签: ruby-on-rails ruby

我有一个从ruby脚本生成的文件,它使用hashie gem将哈希转换为mash,如下所示

config.ip_details.ip_one.pub.heartbeat.ip1  |"198.18.0.2"|
config.vpc.vms.vse_pub.heartbeat.netmask    |"255.255.255.252"|

我想读取文件并需要将Mash的字符串转换为Hash,是否可以在hashie gem中使用任何方法将mash的字符串转换为hash?

1 个答案:

答案 0 :(得分:4)

你可以在Mash对象上调用to_hash method来获取哈希值。

require "hashie"

hash = {:b => 23, :d => {:e => "abc"}} 
mash = Hashie::Mash.new(hash) 
p mash
#=> #<Hashie::Mash b=23 d=#<Hashie::Mash e="abc">>
p mash.to_hash
#=> {"b"=>23, "d"=>{"e"=>"abc"}}

要从文件(YAML)创建Mash对象,您可以使用Mash#load method

mash = Hashie::Mash.load("sample.yml")