9

我目前正在将我的应用程序从 rails 2.3 升级到 3.0 和 ruby​​ 1.9.3。在进行所需的更改并尝试访问我的应用程序的主页后,我收到以下错误。

Psych::SyntaxError ((/apps/myapp/config/locales/en.yml): did not find expected node     content while parsing a flow node at line 73 column 14):
/usr/local/rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych.rb:203:in `parse'
/usr/local/rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych.rb:203:in `parse_stream'
/usr/local/rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych.rb:151:in `parse'
/usr/local/rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych.rb:127:in `load'
/usr/local/rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych.rb:297:in `block in load_file'
/usr/local/rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych.rb:297:in `open'
/usr/local/rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych.rb:297:in `load_file'

完整的堆栈跟踪可以在以下位置找到: http: //pastie.org/5478123

en.yml 的第 73 行包含

order: [:year, :month, :day]

有人可以帮我解决这个问题。目前 myapp 在 Rails 2.3.14 和 ruby​​ 1.8.7 上运行

4

1 回答 1

17

Ruby 1.9.3 使用Psych作为其 Yaml 解析器,而 1.8.7 使用旧的和过时的 Syck。您看到的问题是 LibYaml 中的一个已知问题,这是构建 Psych 的库,并且是由于在流上下文中允许使用冒号时出现的一些歧义。

有一个关于这个的Ruby 错误

解决方案是更改您的 Yaml 以使用块上下文:

order: 
  - :year
  - :month
  - :day

Rails 已更改生成此 Yaml 的模板以避免此错误

于 2012-12-04T19:05:52.090 回答