【发布时间】:2011-08-19 21:28:53
【问题描述】:
有谁知道为什么这个 yaml 会被我的应用正确解析和读取
development:
autocreate_indexes: false
allow_dynamic_fields: true
include_root_in_json: false
parameterize_keys: true
persist_in_safe_mode: false
raise_not_found_error: true
reconnect_time: 3
uri: mongodb://app:app@flame.mongohq.com:27076/app1
但是这个 yaml 不是
defaults: &defaults
autocreate_indexes: false
allow_dynamic_fields: true
include_root_in_json: false
parameterize_keys: true
persist_in_safe_mode: false
raise_not_found_error: true
reconnect_time: 3
development:
<<: *defaults
uri: mongodb://app:app@flame.mongohq.com:27076/app1
我过去曾多次遇到此问题,并且将删除快捷方式语法作为解决方法,但这次我正在使用一个大型应用程序,它在所有地方都使用这种语法,所以我不能轻松转换。
我从来没有遇到过 yaml 解析错误,只是稍后在找不到应用所依赖的值时,我会在调用堆栈中遇到各种错误。
我的环境:
ubuntu 11.04
python 2.7.1+
rvm下的ruby 1.9.2-p180
如果您还需要解决此问题,请告诉我。
更新
当我删除此文件上的速记语法时,我会遇到下一个错误:
psych.rb:148:in `parse': couldn't parse YAML at line 7 column 19 (Psych::SyntaxError)
【问题讨论】:
-
也许您不能对节点和引用使用相同的名称 (
defaults: &defaults)? -
这只是一个高级配置文件。依赖 gem 中还有很多其他地方可以做同样的事情。
-
它在 Ruby 1.8.7 中似乎可以正常工作。您能否将错误解析的数据结构添加到您的问题中?如果可能,使用 'pp' 打印。