想从一个 yaml 文件得到一些信息,结果 load 之后发现不是 hash,是一个具体的对象实例
但是调用对象原来的方法会报这样的错误
NoMethodError: undefined method `host' for #YAML::Object:0xb70ce4fc
有什么方法可以调用这个对象原来的方法或者属性呢?
或者 YAML 就不该这么用?
我只是想获取文件里面的文本信息,能够将 yaml 文件强制读取为 hash 的方法也行
file = File.join(Rails.root, "lib", "categories.yml") dates = YAML.load_file file
使用 load_file
#1 楼 @chucai load 和 load_file 的效果是一样的,这个我倒是试过了。 yaml 文件的第一行就是
--- !ruby/object:Puppet::Transaction::Report
这个应该是 YAML 判断 load 对象类型的依据,我只想要一些文本信息,把!后的都删除再 load 应该可以。
返回 #<YAML::Object> 可能是因为声明的 class 没载入,你可以先 require 'puppet' 看看
#<YAML::Object>
require 'puppet'
#3 楼 @luikore require 'puppet’确实搞定了 不过我本地可能不会装 puppet,只是分析下报告,最后还是通过正则匹配去掉所有的 !ruby/object 来搞定的,谢了