Ruby 1.9.2 patchlevel 180 - libyaml打破了yaml节点引用

时间:2011-06-02 04:44:46

标签: ruby yaml

我使用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"...}}

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

任何想法?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

如果我理解正确,我也不能复制它,也使用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"=>"my_app_test"}}

不确定这是否是一个答案,但我无法将代码放在评论中。如果我有错误的结束,我将编辑或删除...