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 はその Yaml パーサーとしてPsychを使用し、1.8.7 は古くて廃止された Syck を使用しました。表示されている問題は、Psych が構築されているライブラリであるLibYamlの既知の問題であり、フロー コンテキストでコロンが許可されている場合に発生するあいまいさが原因です。

これにはRuby のバグがあります。

解決策は、ブロック コンテキストを使用するように Yaml を変更することです。

order: 
  - :year
  - :month
  - :day

Rails は、このバグを回避するために、この Yaml を生成したテンプレートを変更しました

于 2012-12-04T19:05:52.090 に答える