Bug #4479

Psych fails to parse timestamps which is parsable by Syck

Added by Sakuro OZAWA over 4 years ago. Updated about 4 years ago.

[ruby-core:35457]
Status:Third Party's Issue
Priority:Normal
Assignee:Aaron Patterson
ruby -v:ruby 1.9.3dev (2011-03-08 trunk 31054) [x86_64-darwin10.6.0] Backport:

Description

=begin
$ irb -f -ryaml -rpsych --prompt simple

RUBY_DESCRIPTION
=> "ruby 1.9.3dev (2011-03-08 trunk 31054) [x86_64-darwin10.6.0]"
YAML::ENGINE.yamler = 'syck'
=> "syck"
YAML.load('{created_at: 2011-03-04T15:58:25Z}')
=> {"created_at"=>2011-03-04 15:58:25 UTC}
YAML::ENGINE.yamler = 'psych'
=> "psych"
YAML.load('{created_at: 2011-03-04T15:58:25Z}')
Psych::SyntaxError: (): couldn't parse YAML at line 0 column 26
from /usr/local/lib/ruby/1.9.1/psych.rb:154:in parse'
from /usr/local/lib/ruby/1.9.1/psych.rb:154:in
parse_stream'
from /usr/local/lib/ruby/1.9.1/psych.rb:125:in parse'
from /usr/local/lib/ruby/1.9.1/psych.rb:112:in
load'
from (irb):5
from /usr/local/bin/irb:12:in `'

I encountered this in ActiveSupport::JSON::Backends::Yaml.decode fed a JSON sent to a Rails app from Ext.js 4's RestProxy.

=end


Related issues

Duplicated by Ruby trunk - Bug #4868: ActiveSupport::JSON.decode Fails Decoding Date/Time String Closed 06/11/2011

History

#1 Updated by Sakuro OZAWA over 4 years ago

=begin
Reformat...

$ irb -f -ryaml -rpsych --prompt simple

RUBY_DESCRIPTION
=> "ruby 1.9.3dev (2011-03-08 trunk 31054) [x86_64-darwin10.6.0]"
YAML::ENGINE.yamler = 'syck'
=> "syck"
YAML.load('{created_at: 2011-03-04T15:58:25Z}')
=> {"created_at"=>2011-03-04 15:58:25 UTC}
YAML::ENGINE.yamler = 'psych'
=> "psych"
YAML.load('{created_at: 2011-03-04T15:58:25Z}')
Psych::SyntaxError: (): couldn't parse YAML at line 0 column 26
from /usr/local/lib/ruby/1.9.1/psych.rb:154:in parse'
from /usr/local/lib/ruby/1.9.1/psych.rb:154:in
parse_stream'
from /usr/local/lib/ruby/1.9.1/psych.rb:125:in parse'
from /usr/local/lib/ruby/1.9.1/psych.rb:112:in
load'
from (irb):5
from /usr/local/bin/irb:12:in `'

I encountered this in ActiveSupport::JSON::Backends::Yaml.decode fed a JSON sent to a Rails app from Ext.js 4's RestProxy.

=end

#2 Updated by Sakuro OZAWA over 4 years ago

=begin
libyaml version 0.1.3 (MacPorts)

=end

#3 Updated by Aaron Patterson over 4 years ago

  • Status changed from Open to Third Party's Issue
  • Assignee set to Aaron Patterson

=begin
This is due to ambiguities in the YAML spec and is expressly not supported by libyaml.

Please see the discussion here:

http://sourceforge.net/mailarchive/forum.php?thread_name=AANLkTi%3DtRBNOo__zmn%3D%3D3hW_VhQQNG1WeD5E-1z6ZAKm%40mail.gmail.com&forum_name=yaml-core

and here:

http://pyyaml.org/wiki/YAMLColonInFlowContext

=end

Also available in: Atom PDF