【问题标题】:Ruby 1.9.2 patchlevel 180 - libyaml breaks yaml node referenceRuby 1.9.2 补丁级别 180 - libyaml 中断 yaml 节点参考
【发布时间】:2011-06-02 04:44:46
【问题描述】:

我使用 rvm 升级到 1.9.2-p180。在安装过程中,获取并安装了 libyaml 0.1.3。

现在,当我在这样的 Rails 项目中拥有我的 database.yml 时:

defaults: &defaults
  adapter: mysql
  encoding: UTF-8
  username: root
  password:
  host: localhost
  engine: InnoDB

test:
  <<: *defaults
  database: my_app_test

在控制台中,

YAML.load_file("config/database.yml") 

结果是:

{"test" => {"apapter" => "mysql"...}}

问题是缺少“数据库”键。似乎没有将默认节点和测试节点合并在一起,而只是复制默认节点。

有什么想法吗?

【问题讨论】:

标签: ruby yaml


【解决方案1】:

无论如何,升级到 ruby​​-p290 解决了这个问题。

【讨论】:

    【解决方案2】:

    如果我理解正确,我无法复制,同样使用 1.9.2.180:

    irb(main):002:0> YAML::load_file('./test.yml')
    => {"defaults"=>{"adapter"=>"mysql", "encoding"=>"UTF-8", "username"=>"root", "password"=>nil, "host"=>"localhost", "engine"=>"InnoDB"}, "test"=>{"adapter"=>"mysql", "encoding"=>"UTF-8", "username"=>"root", "password"=>nil, "host"=>"localhost", "engine"=>"InnoDB", "database"=>"my_app_test"}}
    

    (向右滚动查看:"database"=&gt;"my_app_test"}}

    不确定这是否是这样的答案,但我无法将代码放在评论中。如果我的棍子末端有误,我会编辑或删除...

    【讨论】:

    • 不知道为什么它对你有用,伙计。也许你用过syck。这是 p180 中的一个已知问题
    猜你喜欢
    • 2011-06-02
    • 1970-01-01
    • 2010-11-03
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多