【发布时间】:2012-03-21 23:04:51
【问题描述】:
我正在使用 Thor 并尝试将 YAML 输出到文件。在 irb 中,我得到了我的期望。 YAML 格式的纯文本。但是当 Thor 中某个方法的一部分时,它的输出就不同了……
class Foo < Thor
include Thor::Actions
desc "bar", "test"
def set
test = {"name" => "Xavier", "age" => 30}
puts test
# {"name"=>"Xavier", "age"=>30}
puts test.to_yaml
# !binary "bmFtZQ==": !binary |-
# WGF2aWVy
# !binary "YWdl": 30
File.open("data/config.yml", "w") {|f| f.write(test.to_yaml) }
end
end
有什么想法吗?
【问题讨论】:
-
我刚刚运行了您的示例,它给了我非常好的输出。我跑雷神 0.14.6。
-
感谢您抽出宝贵时间查看。在这一点上,我不知道该怎么做。如果这有什么不同的话,我正在使用 Ruby 1.9.3p125。 :)
-
我安装了 1.9.3 并再次运行它,确实是二进制输出。我注意到 YAML 在安装过程中得到了升级。它可能与升级版本有关。
-
谢谢马兰。我假设 yaml 是内置在 ruby 中的,rvm 安装 1.9.2 而不是安装 1.9.3 w/yaml 的降级版本会更容易吗?
-
是的,一旦我发出 rvm 1.9.2 一切都会再次运行,yaml 明智。如果您不需要需要 1.9.3,我会切换回1.9.2