Forum: Ruby-core [Bug #3112] require "yaml" doesn't use psych as default

Posted by Usaku NAKAMURA (Guest)
on 2010-04-08 04:17
(Received via mailing list)
Bug #3112: require "yaml" doesn't use psych as default
http://redmine.ruby-lang.org/issues/show/3112

Author: Usaku NAKAMURA
Status: Open, Priority: Normal
Category: lib, Target version: 1.9.2
ruby -v: ruby 1.9.2dev (2010-04-08 trunk 27255)

why?
Posted by Yui NARUSE (Guest)
on 2010-04-08 07:07
(Received via mailing list)
Issue #3112 has been updated by Yui NARUSE.



= Before
require 'yaml' and you can use YAML by syck.

= History
#2340 Removing YAML/Syck.
http://redmine.ruby-lang.org/issues/show/2340

After imported psych, it is found that test-all conflicts.
To avoid this, yamler is introduced.
By yamler people can switch syck or psych (default is syck).

= Current
There is 3 element:
* lib/yaml.rb
* ext/syck
* ext/psych

= Q&A
Why psych is bundled:
* To review psych

Why psych is not default:
* it is not confirmed that it can be default in 1.9.2
* it has some incompatibilities showed following.

Why syck is still bundled:
* for machines which libyaml is not installed
* for Windows

Incompatibilities are following, can you explain why it can't 
compatible, Aaron?
ext/syck/lib/syck.rb: YAML.generic_parser is deprecated, switch to 
psych"
ext/syck/lib/syck.rb: YAML.resolver is deprecated
ext/syck/lib/syck.rb: YAML.emitter is deprecated
ext/syck/lib/syck.rb: YAML.each_document is deprecated
ext/syck/lib/syck.rb: YAML.each_node is deprecated
ext/syck/lib/syck.rb: YAML.parse_documents is deprecated, use 
load_stream
ext/syck/lib/syck.rb: YAML.add_ruby_type is deprecated, use 
add_domain_ty
ext/syck/lib/syck.rb: YAML.add_private_type is deprecated, use 
add_domain
ext/syck/lib/syck.rb: YAML.detect_implicit is deprecated
ext/syck/lib/syck.rb: YAML.tagurize is deprecated
ext/syck/lib/syck.rb: YAML.transfer is deprecated
ext/syck/lib/syck.rb: YAML.try_implicit is deprecated
ext/syck/lib/syck.rb: YAML.read_type_class is deprecated
ext/syck/lib/syck.rb: YAML.object_maker is deprecated
ext/syck/lib/syck.rb: YAML.quick_emit is deprecated
ext/syck/lib/syck/basenode.rb: select is deprecated
ext/syck/lib/syck/basenode.rb: select!() is deprecated
ext/syck/lib/syck/basenode.rb: search() is deprecated
ext/syck/lib/syck/basenode.rb: at() is deprecated
ext/syck/lib/syck/basenode.rb: match_path is deprecated
ext/syck/lib/syck/basenode.rb: match_segment is deprecated
ext/syck/lib/syck/basenode.rb: children_with_index is deprecated, use
ext/syck/lib/syck/encoding.rb: YAML.escape is deprecated
ext/syck/lib/syck/encoding.rb: YAML.unescape is deprecated
ext/syck/lib/syck/stream.rb: edit is deprecated
ext/syck/lib/syck/stringio.rb: yaml/stringio is deprecated
ext/syck/lib/syck/ypath.rb: YAML::YPath is deprecated

----------------------------------------
http://redmine.ruby-lang.org/issues/show/3112
Posted by Usaku NAKAMURA (Guest)
on 2010-04-08 07:35
(Received via mailing list)
Issue #3112 has been updated by Usaku NAKAMURA.


> Why psych is not default:
> * it is not confirmed that it can be default in 1.9.2

You wrote that "It's decided by Yugui." at [ruby-core:28828].
Didn't it mean to make psych the default YAML engine?

----------------------------------------
http://redmine.ruby-lang.org/issues/show/3112
Posted by Aaron Patterson (Guest)
on 2010-04-08 17:41
(Received via mailing list)
On Thu, Apr 08, 2010 at 02:06:55PM +0900, Yui NARUSE wrote:
> 
> = Q&A
> 
> Incompatibilities are following, can you explain why it can't compatible, Aaron?

Yes!  Many of these methods are exposing implementation specific details
for syck.  For example, the "detect_implicit" method detects whether a
YAML string is an implicit or explicit string.  "try_implicit" which
attempts to use "detect_implicit".  "object_maker" calls allocate on
a class and sets instance variables based on a hash.  These are clearly
methods which should never be exposed as a public API.

Other methods are deprecated because they are simply duplicates.  For
example, YAML.load_documents and YAML.each_document do _exactly_ the 
same thing.
YAML.each_node and YAML.parse_documents do _exactly_ the same thing.

On top of that, most of these methods are untested, which makes writing
100% compatible software impossible.  All of these methods could
be added to Psych, but it wouldn't be guaranteed that they work the same
way as Syck.

I understood from [ruby-core:28749], that Psych didn't need to have full
compatibility.  The best way I could think to warn users and maintain
compatibility is to default to the old parser and let users choose to
use the new one.

> ext/syck/lib/syck.rb: YAML.transfer is deprecated
> ext/syck/lib/syck/basenode.rb: children_with_index is deprecated, use
> ext/syck/lib/syck/encoding.rb: YAML.escape is deprecated
> ext/syck/lib/syck/encoding.rb: YAML.unescape is deprecated
> ext/syck/lib/syck/stream.rb: edit is deprecated
> ext/syck/lib/syck/stringio.rb: yaml/stringio is deprecated
> ext/syck/lib/syck/ypath.rb: YAML::YPath is deprecated

I am happy to add most of these to Psych, *if* Psych is going to be the
default parser.  I do not want to support these methods long term
though.  Please give me a clear direction, and I will make it happen.
Posted by Caleb Clausen (Guest)
on 2010-04-08 20:25
(Received via mailing list)
On 4/8/10, Aaron Patterson <aaron@tenderlovemaking.com> wrote:
> Other methods are deprecated because they are simply duplicates.  For
> example, YAML.load_documents and YAML.each_document do _exactly_ the same
> thing.
> YAML.each_node and YAML.parse_documents do _exactly_ the same thing.

In these 2 cases, all that's needed are aliases. What's wrong with
that? We have aliases other places in the ruby's stdlib, and no one is
crying out to retire collect! in favor of map!, for instance.
(Besides, I like the each_* names somewhat better; they're more
familiar to your average rubyist. Not that I've ever actually used
either method....)
Posted by Aaron Patterson (Guest)
on 2010-04-08 21:32
(Received via mailing list)
On Fri, Apr 09, 2010 at 03:24:49AM +0900, Caleb Clausen wrote:
> familiar to your average rubyist. Not that I've ever actually used
> either method....)

Does "load_documents" sound like it does the same thing as
"each_document"?  Does "each_node" sound like it does the same thing as
"parse_documents"?  I would buy your argument if they were synonyms.
Posted by Caleb Clausen (Guest)
on 2010-04-08 22:43
(Received via mailing list)
On 4/8/10, Aaron Patterson <aaron@tenderlovemaking.com> wrote:
> Does "load_documents" sound like it does the same thing as
> "each_document"?  Does "each_node" sound like it does the same thing as
> "parse_documents"?  I would buy your argument if they were synonyms.

Good point, but do load_documents and parse_documents sound like they
can take a block? They don't to me, whereas the each_* forms clearly
do. I don't think you can get to perfection here.
Posted by NARUSE, Yui (Guest)
on 2010-04-09 07:42
(Received via mailing list)
First of all, people want compatibility.
Although Ruby sometimes breaks compatibility, it is important.
We should keep compability until it has enough reason.

> Yes!  Many of these methods are exposing implementation specific details
> for syck.  For example, the "detect_implicit" method detects whether a
> YAML string is an implicit or explicit string.  "try_implicit" which
> attempts to use "detect_implicit".  "object_maker" calls allocate on
> a class and sets instance variables based on a hash.  These are clearly
> methods which should never be exposed as a public API.

An API is implementation specific is not enough reason.
Implementation can return some value as if it works.
YAML.detect_implicit seems such one.

If an API is depend on syck implementation and hard to emulate,
such API can be removed.
It will trouble some users and it is sorry, but it is unavoidable.

> Other methods are deprecated because they are simply duplicates.  For
> example, YAML.load_documents and YAML.each_document do _exactly_ the same thing.
> YAML.each_node and YAML.parse_documents do _exactly_ the same thing.

Duplication is not enough reason to break compatibility.

Yes, your preference should be respect.
You can remove them with some migrating process.

Usual Ruby's process of removing API is:
* mark the API as deprecated
* release some versions
* remove it

> On top of that, most of these methods are untested, which makes writing
> 100% compatible software impossible.  All of these methods could
> be added to Psych, but it wouldn't be guaranteed that they work the same
> way as Syck.

Of course 100% is impossible.
What we need is almost compatible.
"almost" means what people use.

> I understood from [ruby-core:28749], that Psych didn't need to have full
> compatibility.  The best way I could think to warn users and maintain
> compatibility is to default to the old parser and let users choose to
> use the new one.

If psych doesn't have enough compatibility to replace in 1.9.2,
we need some migration path.

> I am happy to add most of these to Psych, *if* Psych is going to be the
> default parser.  I do not want to support these methods long term
> though.  Please give me a clear direction, and I will make it happen.

If psych has enough compatibility, it can be a default parser in 1.9.2.
As far as I know, YAML.quick_emit breaks some applications like 
RubyGems.

Yeah, what is "enough compatibility" is the problem.
I think, Rails and its dependency can run can be a test.
Posted by NARUSE, Yui (Guest)
on 2010-04-09 07:43
(Received via mailing list)
2010/4/8 Usaku NAKAMURA <redmine@ruby-lang.org>:
> Issue #3112 has been updated by Usaku NAKAMURA.
>> Why psych is not default:
>> * it is not confirmed that it can be default in 1.9.2
>
> You wrote that "It's decided by Yugui." at [ruby-core:28828].
> Didn't it mean to make psych the default YAML engine?

What I wanted to say is the direction replacing syck with psych is
already decided.
When it will be done is not intended; 1.9.2 or 1.9.3 or later.

Sorry for misleading.
Posted by NARUSE, Yui (Guest)
on 2010-04-10 12:12
(Received via mailing list)
I found Aaron added YAML.quick_emit to Psych, thank.

So I tried test-all with setting psych as default yaml impl as 
following:
diff --git a/lib/yaml.rb b/lib/yaml.rb
index 9b5a9b2..0151973 100644
--- a/lib/yaml.rb
+++ b/lib/yaml.rb
@@ -40,4 +40,4 @@ module Psych
    ENGINE = YAML::ENGINE
  end

-YAML::ENGINE.yamler = engine
+YAML::ENGINE.yamler = 'psych'
diff --git a/test/psych/helper.rb b/test/psych/helper.rb
index 61049d6..256fe60 100644
--- a/test/psych/helper.rb
+++ b/test/psych/helper.rb
@@ -55,9 +55,3 @@ module Psych
  end

  require 'psych'
-
-# FIXME: remove this when syck is removed
-o = Object.new
-a = o.method(:psych_to_yaml)
-b = o.method(:to_yaml)
-raise "psych should define to_yaml" unless a == b


And I ran this and following result:
  make RUBYOPT=-w TESTS='-v -x test/psych' test-all


   2) Failure:
test_to_yaml(Psych::TestArray) 
[/home/naruse/ruby/test/yaml/test_array.rb:11]:
<[{:a=>"b"}, "foo"]> expected but was
<[["taguri", "!ruby/object:Array"], ["to_yaml_style", 1]]>.

   3) Failure:
test_to_yaml(Psych::TestHash) 
[/home/naruse/ruby/test/yaml/test_hash.rb:11]:
<{:a=>"b"}> expected but was
<{"taguri"=>"!ruby/object:Hash", "to_yaml_style"=>1}>.

   4) Failure:
test_to_yaml(Psych::TestOmap) 
[/home/naruse/ruby/test/yaml/test_omap.rb:30]:
Expected /!omap/ to match "--- !ruby/object:Psych::Omap\ntaguri: ! 
'!ruby/object:Psych::Omap'\nto_yaml_style: 1\n".

   5) Failure:
test_to_yaml(Psych::TestSet) 
[/home/naruse/ruby/test/yaml/test_set.rb:13]:
Expected /!set/ to match "--- !ruby/object:Psych::Set\ntaguri: ! 
'!ruby/object:Psych::Set'\nto_yaml_style: 1\n".

   6) Error:
test_load(Psych::TestStruct):
Psych::SyntaxError: couldn't parse YAML at line 2 column 0
     /home/naruse/obj/ruby/.ext/common/psych.rb:147:in `parse'
     /home/naruse/obj/ruby/.ext/common/psych.rb:147:in `parse_stream'
     /home/naruse/obj/ruby/.ext/common/psych.rb:118:in `parse'
     /home/naruse/obj/ruby/.ext/common/psych.rb:105:in `load'
     /home/naruse/ruby/test/yaml/test_struct.rb:23:in `test_load'

   7) Error:
test_to_yaml(Psych::TestSymbol):
TypeError: can't define singleton
     /home/naruse/obj/ruby/.ext/common/psych/deprecated.rb:10:in 
`extend_object'
     /home/naruse/obj/ruby/.ext/common/psych/deprecated.rb:10:in 
`extend'
     /home/naruse/obj/ruby/.ext/common/psych/deprecated.rb:10:in 
`quick_emit'
     /home/naruse/obj/ruby/.ext/common/syck/rubytypes.rb:15:in `to_yaml'
     /home/naruse/obj/ruby/.ext/common/syck/rubytypes.rb:199:in 
`to_yaml'
     /home/naruse/ruby/test/yaml/test_symbol.rb:7:in `test_to_yaml'

  11) Failure:
test_execute_field(TestGemCommandsSpecificationCommand) 
[/home/naruse/ruby/test/rubygems/test_gem_commands_specification_command.rb:83]:
Expected "foo", not "".

  12) Failure:
test_write(TestGemConfigFile) 
[/home/naruse/ruby/test/rubygems/test_gem_config_file.rb:224]:
install.
Expected "--wrappers", not nil.


  13) Failure:
test_write_from_hash(TestGemConfigFile) 
[/home/naruse/ruby/test/rubygems/test_gem_config_file.rb:257
]:
backtrace.
Expected true, not false.

  14) Failure:
test_sign_in_with_other_credentials_doesnt_overwrite_other_keys(TestGemGemcutterUtilities) 
[/home/naruse/ruby/test/rubygems/test_gem_gemcutter_utilities.rb:64]:
Expected "a5fdbb6ba150cbb83aad2bb2fede64cf040453903", not nil.

  15) Failure:
test_sign_in_with_host(TestGemGemcutterUtilities) 
[/home/naruse/ruby/test/rubygems/test_gem_gemcutter_utilities.rb:38]:
Expected "a5fdbb6ba150cbb83aad2bb2fede64cf040453903", not nil.

  16) Failure:
test_sign_in(TestGemGemcutterUtilities) 
[/home/naruse/ruby/test/rubygems/test_gem_gemcutter_utilities.rb:26]:
Expected "a5fdbb6ba150cbb83aad2bb2fede64cf040453903", not nil.

  17) Error:
test_to_yaml_platform_legacy(TestGemSpecification):
TypeError: allocator undefined for NilClass
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`allocate'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`block in revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`map'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/nodes/node.rb:25:in 
`to_ruby'
     /home/naruse/obj/ruby/.ext/common/psych.rb:106:in `load'
     /home/naruse/ruby/test/rubygems/test_gem_specification.rb:886:in 
`test_to_yaml_platform_legacy'

  18) Error:
test_to_yaml_fancy(TestGemSpecification):
TypeError: allocator undefined for NilClass
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`allocate'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`block in revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`map'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/nodes/node.rb:25:in 
`to_ruby'
     /home/naruse/obj/ruby/.ext/common/psych.rb:106:in `load'
     /home/naruse/ruby/test/rubygems/test_gem_specification.rb:867:in 
`test_to_yaml_fancy'

  19) Error:
test_to_yaml(TestGemSpecification):
TypeError: allocator undefined for NilClass
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`allocate'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`block in revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`map'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/nodes/node.rb:25:in 
`to_ruby'
     /home/naruse/obj/ruby/.ext/common/psych.rb:106:in `load'
     /home/naruse/ruby/test/rubygems/test_gem_specification.rb:858:in 
`test_to_yaml'

  20) Error:
test_path_ok_eh_user(TestGemUninstaller):
TypeError: allocator undefined for NilClass
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`allocate'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`block in revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`map'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/nodes/node.rb:25:in 
`to_ruby'
     /home/naruse/obj/ruby/.ext/common/psych.rb:106:in `load'

  21) Error:
test_uninstall(TestGemUninstaller):
TypeError: allocator undefined for NilClass
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`allocate'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`block in revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`map'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/nodes/node.rb:25:in 
`to_ruby'
     /home/naruse/obj/ruby/.ext/common/psych.rb:106:in `load'

  22) Error:
test_path_ok_eh(TestGemUninstaller):
TypeError: allocator undefined for NilClass
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`allocate'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`block in revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`map'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/nodes/node.rb:25:in 
`to_ruby'
     /home/naruse/obj/ruby/.ext/common/psych.rb:106:in `load'

  23) Error:
test_remove_executables_force_keep(TestGemUninstaller):
TypeError: allocator undefined for NilClass
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`allocate'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`block in revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`map'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/nodes/node.rb:25:in 
`to_ruby'
     /home/naruse/obj/ruby/.ext/common/psych.rb:106:in `load'

  24) Error:
test_initialize_expand_path(TestGemUninstaller):
TypeError: allocator undefined for NilClass
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`allocate'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`block in revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`map'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/nodes/node.rb:25:in 
`to_ruby'
     /home/naruse/obj/ruby/.ext/common/psych.rb:106:in `load'

  25) Error:
test_remove_executables_force_remove(TestGemUninstaller):
TypeError: allocator undefined for NilClass
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`allocate'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`block in revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`map'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/nodes/node.rb:25:in 
`to_ruby'
     /home/naruse/obj/ruby/.ext/common/psych.rb:106:in `load'

  26) Error:
test_remove_executables_user(TestGemUninstaller):
TypeError: allocator undefined for NilClass
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`allocate'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`block in revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`map'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/nodes/node.rb:25:in 
`to_ruby'
     /home/naruse/obj/ruby/.ext/common/psych.rb:106:in `load'

  27) Error:
test_uninstall_user(TestGemUninstaller):
TypeError: allocator undefined for NilClass
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`allocate'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`block in revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`map'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/nodes/node.rb:25:in 
`to_ruby'
     /home/naruse/obj/ruby/.ext/common/psych.rb:106:in `load'


  28) Error:
test_path_ok_eh_legacy(TestGemUninstaller):
TypeError: allocator undefined for NilClass
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`allocate'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`block in revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`map'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in 
`revive'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in 
`visit_Psych_Nodes_Mapping'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in 
`accept'
     /home/naruse/obj/ruby/.ext/common/psych/nodes/node.rb:25:in 
`to_ruby'
     /home/naruse/obj/ruby/.ext/common/psych.rb:106:in `load'

  29) Error:
test_get(TestNetHTTPS):
Errno::ECONNRESET: Connection reset by peer
     /home/naruse/obj/ruby/.ext/common/openssl/buffering.rb:336:in 
`close'
     /home/naruse/obj/ruby/.ext/common/openssl/buffering.rb:336:in 
`sysclose'
     /home/naruse/obj/ruby/.ext/common/openssl/buffering.rb:336:in 
`close'

  30) Error:
test_changes_after_commit_are_discarded(YAMLStoreTest):
NameError: uninitialized constant Psych::Store
     /home/naruse/ruby/test/yaml/test_yamlstore.rb:7:in `setup'

  31) Error:
test_changes_are_not_written_on_abort(YAMLStoreTest):
NameError: uninitialized constant Psych::Store
     /home/naruse/ruby/test/yaml/test_yamlstore.rb:7:in `setup'

  32) Error:
test_data_should_be_loaded_correctly_when_in_readonly_mode(YAMLStoreTest):
NameError: uninitialized constant Psych::Store
     /home/naruse/ruby/test/yaml/test_yamlstore.rb:7:in `setup'

  33) Error:
test_data_should_be_loaded_correctly_when_in_readwrite_mode(YAMLStoreTest):
NameError: uninitialized constant Psych::Store
     /home/naruse/ruby/test/yaml/test_yamlstore.rb:7:in `setup'

  34) Error:
test_opening_new_file_in_readonly_mode_should_result_in_empty_values(YAMLStoreTest):
NameError: uninitialized constant Psych::Store
     /home/naruse/ruby/test/yaml/test_yamlstore.rb:7:in `setup'

  35) Error:
test_opening_new_file_in_readwrite_mode_should_result_in_empty_values(YAMLStoreTest):
NameError: uninitialized constant Psych::Store
     /home/naruse/ruby/test/yaml/test_yamlstore.rb:7:in `setup'

  36) Error:
test_writing_inside_readonly_transaction_raises_error(YAMLStoreTest):
NameError: uninitialized constant Psych::Store
     /home/naruse/ruby/test/yaml/test_yamlstore.rb:7:in `setup'

  37) Failure:
test_akira(YAML_Unit_Tests) 
[/home/naruse/ruby/test/yaml/test_yaml.rb:1180]:
<{"A"=>"A,", "B"=>"B"}> expected but was
<{"taguri"=>"!ruby/object:Hash", "to_yaml_style"=>1}>.

  38) Failure:
test_ambiguous_comments(YAML_Unit_Tests) 
[/home/naruse/ruby/test/yaml/test_yaml.rb:204]:
<"Call the method #dave"> expected but was
<"">.

  39) Failure:
test_basic_strings(YAML_Unit_Tests) 
[/home/naruse/ruby/test/yaml/test_yaml.rb:79]:
<"x"> expected but was
<"">.

  40) Failure:
test_circular_references(YAML_Unit_Tests) 
[/home/naruse/ruby/test/yaml/test_yaml.rb:1252]:
<"[[...], [...]]"> expected but was
<"[[\"taguri\", \"!ruby/object:Array\"], [\"to_yaml_style\", 1]]">.

  41) Error:
test_document(YAML_Unit_Tests):
NameError: uninitialized constant Psych::Stream
     /home/naruse/ruby/test/yaml/test_yaml.rb:1146:in `test_document'

  42) Failure:
test_emitting_indicators(YAML_Unit_Tests) 
[/home/naruse/ruby/test/yaml/test_yaml.rb:1136]:
<"Hi, from Object 1. You passed: please, pretty please"> expected but 
was
<"">.

  43) Failure:
test_empty_map_key(YAML_Unit_Tests) 
[/home/naruse/ruby/test/yaml/test_yaml.rb:1291]:
<[[]]> expected but was
<["taguri", "to_yaml_style"]>.

  44) Error:
test_numeric_cycle(YAML_Unit_Tests):
TypeError: can't define singleton
     /home/naruse/obj/ruby/.ext/common/psych/deprecated.rb:10:in 
`extend_object'
     /home/naruse/obj/ruby/.ext/common/psych/deprecated.rb:10:in 
`extend'
     /home/naruse/obj/ruby/.ext/common/psych/deprecated.rb:10:in 
`quick_emit'
     /home/naruse/obj/ruby/.ext/common/syck/rubytypes.rb:15:in `to_yaml'
     /home/naruse/obj/ruby/.ext/common/syck/rubytypes.rb:370:in 
`to_yaml'
     /home/naruse/ruby/test/yaml/test_yaml.rb:38:in `assert_cycle'
     /home/naruse/ruby/test/yaml/test_yaml.rb:1277:in 
`test_numeric_cycle'

  45) Failure:
test_range_cycle(YAML_Unit_Tests) 
[/home/naruse/ruby/test/yaml/test_yaml.rb:1231]:
<"a".."z"> expected but was
<nil..nil>.

  46) Failure:
test_ranges(YAML_Unit_Tests) 
[/home/naruse/ruby/test/yaml/test_yaml.rb:1061]:
<1..3> expected but was
<nil..nil>.

  47) Error:
test_ruby_complex(YAML_Unit_Tests):
TypeError: can't define singleton method "encode_with" for Complex
     /home/naruse/obj/ruby/.ext/common/psych/deprecated.rb:12:in 
`singleton_method_added'
     /home/naruse/obj/ruby/.ext/common/psych/deprecated.rb:12:in 
`define_method'
     /home/naruse/obj/ruby/.ext/common/psych/deprecated.rb:12:in 
`quick_emit'
     /home/naruse/obj/ruby/.ext/common/syck/rubytypes.rb:15:in `to_yaml'
     /home/naruse/obj/ruby/.ext/common/syck/rubytypes.rb:425:in 
`to_yaml'
     /home/naruse/ruby/test/yaml/test_yaml.rb:22:in `assert_to_yaml'
     /home/naruse/ruby/test/yaml/test_yaml.rb:1124:in 
`test_ruby_complex'

  48) Error:
test_ruby_rational(YAML_Unit_Tests):
TypeError: can't define singleton method "encode_with" for Rational
     /home/naruse/obj/ruby/.ext/common/psych/deprecated.rb:12:in 
`singleton_method_added'
     /home/naruse/obj/ruby/.ext/common/psych/deprecated.rb:12:in 
`define_method'
     /home/naruse/obj/ruby/.ext/common/psych/deprecated.rb:12:in 
`quick_emit'
     /home/naruse/obj/ruby/.ext/common/syck/rubytypes.rb:15:in `to_yaml'
     /home/naruse/obj/ruby/.ext/common/syck/rubytypes.rb:405:in 
`to_yaml'
     /home/naruse/ruby/test/yaml/test_yaml.rb:22:in `assert_to_yaml'
     /home/naruse/ruby/test/yaml/test_yaml.rb:1112:in 
`test_ruby_rational'

  49) Failure:
test_ruby_regexp(YAML_Unit_Tests) 
[/home/naruse/ruby/test/yaml/test_yaml.rb:1047]:
<{"simple"=>/a.b/,
  "complex"=>/\A"((?:[^"]|\")+)"/,
  "case-insensitive"=>/George McFly/i}> expected but was
<{"taguri"=>"!ruby/object:Hash", "to_yaml_style"=>1}>.

  50) Failure:
test_ruby_struct(YAML_Unit_Tests) 
[/home/naruse/ruby/test/yaml/test_yaml.rb:1084]:
<[#<struct Struct::BookStruct
   author="Yukihiro Matsumoto",
   title="Ruby in a Nutshell",
   year=2002,
   isbn="0-596-00214-9">,
  #<struct Struct::BookStruct
   author=["Dave Thomas", "Andy Hunt"],
   title="The Pickaxe",
   year=2002,
   isbn=
    #<struct Struct::BookStruct
     author="This should be the ISBN",
     title="but I have another struct here",
     year=2002,
     isbn="None">>]> expected but was
<[["taguri", "!ruby/object:Array"], ["to_yaml_style", 1]]>.

  51) Failure:
test_spec_anchors_and_aliases(YAML_Unit_Tests) 
[/home/naruse/ruby/test/yaml/test_yaml.rb:244]:
<[{"arrival"=>"EDI", "departure"=>"LAX", "fareref"=>"DOGMA", 
"currency"=>"GBP"},
  {"arrival"=>"MEL", "departure"=>"SYD", "fareref"=>"MADF", 
"currency"=>"AUD"},
  {"arrival"=>"MCO", "departure"=>"JFK", "fareref"=>"DFSF", 
"currency"=>"USD"}]> expected but was
<[["taguri", "!ruby/object:Array"], ["to_yaml_style", 1]]>.

  52) Error:
test_spec_application_family(YAML_Unit_Tests):
Psych::SyntaxError: couldn't parse YAML at line 0 column 29
     /home/naruse/obj/ruby/.ext/common/psych.rb:147:in `parse'
     /home/naruse/obj/ruby/.ext/common/psych.rb:147:in `parse_stream'
     /home/naruse/obj/ruby/.ext/common/psych.rb:118:in `parse'
     /home/naruse/obj/ruby/.ext/common/psych.rb:105:in `load'
     /home/naruse/ruby/test/yaml/test_yaml.rb:33:in `assert_parse_only'
     /home/naruse/ruby/test/yaml/test_yaml.rb:792:in 
`test_spec_application_family'

  53) Failure:
test_spec_builtin_literal_blocks(YAML_Unit_Tests) 
[/home/naruse/ruby/test/yaml/test_yaml.rb:910]:
<{"both are equal to"=>"  This has no newline.",
  "is equal to"=>
   "The \\ ' \" characters may be\nfreely used. Leading white\n   space 
is significant.\n\nLine breaks are significant.\nThus this value 
contains one\nempty line and ends with a\nsingle line break, but 
does\nnot start with one.\n",
  "also written as"=>"  This has no newline.",
  "indented and chomped"=>"  This has no newline.",
  "empty"=>"",
  "literal"=>
   "The \\ ' \" characters may be\nfreely used. Leading white\n   space 
is significant.\n\nLine breaks are significant.\nThus this value 
contains one\nempty line and ends with a\nsingle line break, but 
does\nnot start with one.\n"}> expected but was
<{"empty"=>"",
  "literal"=>
   "The \\ ' \" characters may be\nfreely used. Leading white\n   space 
is significant.\n\nLine breaks are significant.\nThus this value 
contains one\nempty line and ends with a\nsingle line break, but 
does\nnot start with one.\n",
  "is equal to"=>
   "The  ' \" characters may be\nfreely used. Leading white\n   space is 
significant.\n\nLine breaks are significant.\nThus this value contains 
one\nempty line and ends with a\nsingle line break, but does\nnot start 
with one.\n",
  "indented and chomped"=>"  This has no newline.",
  "also written as"=>"  This has no newline.",
  "both are equal to"=>"  This has no newline."}>.

  54) Error:
test_spec_domain_prefix(YAML_Unit_Tests):
Psych::SyntaxError: couldn't parse YAML at line 1 column 26
     /home/naruse/obj/ruby/.ext/common/psych.rb:147:in `parse'
     /home/naruse/obj/ruby/.ext/common/psych.rb:147:in `parse_stream'
     /home/naruse/obj/ruby/.ext/common/psych.rb:118:in `parse'
     /home/naruse/obj/ruby/.ext/common/psych.rb:105:in `load'
     /home/naruse/ruby/test/yaml/test_yaml.rb:33:in `assert_parse_only'
     /home/naruse/ruby/test/yaml/test_yaml.rb:647:in 
`test_spec_domain_prefix'

  55) Error:
test_spec_float_explicit(YAML_Unit_Tests):
Psych::SyntaxError: couldn't parse YAML at line 4 column 17
     /home/naruse/obj/ruby/.ext/common/psych.rb:147:in `parse'
     /home/naruse/obj/ruby/.ext/common/psych.rb:147:in `parse_stream'
     /home/naruse/obj/ruby/.ext/common/psych.rb:118:in `parse'
     /home/naruse/obj/ruby/.ext/common/psych.rb:105:in `load'
     /home/naruse/ruby/test/yaml/test_yaml.rb:33:in `assert_parse_only'
     /home/naruse/ruby/test/yaml/test_yaml.rb:810:in 
`test_spec_float_explicit'

  56) Error:
test_spec_private_types(YAML_Unit_Tests):
NoMethodError: undefined method `parse_documents' for Psych:Module
     /home/naruse/ruby/test/yaml/test_yaml.rb:693:in 
`test_spec_private_types'

  57) Error:
test_spec_root_fold(YAML_Unit_Tests):
Psych::SyntaxError: couldn't parse YAML at line 5 column 0
     /home/naruse/obj/ruby/.ext/common/psych.rb:147:in `parse'
     /home/naruse/obj/ruby/.ext/common/psych.rb:147:in `parse_stream'
     /home/naruse/obj/ruby/.ext/common/psych.rb:118:in `parse'
     /home/naruse/obj/ruby/.ext/common/psych.rb:105:in `load'
     /home/naruse/ruby/test/yaml/test_yaml.rb:589:in 
`test_spec_root_fold'

  58) Failure:
test_spec_simple_implicit_map(YAML_Unit_Tests) 
[/home/naruse/ruby/test/yaml/test_yaml.rb:126]:
<{"hr"=>65, "avg"=>0.278, "rbi"=>147}> expected but was
<{"taguri"=>"!ruby/object:Hash", "to_yaml_style"=>1}>.

  59) Failure:
test_spec_simple_implicit_sequence(YAML_Unit_Tests) 
[/home/naruse/ruby/test/yaml/test_yaml.rb:115]:
<["Mark McGwire", "Sammy Sosa", "Ken Griffey"]> expected but was
<[["taguri", "!ruby/object:Array"], ["to_yaml_style", 1]]>.

  60) Failure:
test_spec_simple_map_with_nested_sequences(YAML_Unit_Tests) 
[/home/naruse/ruby/test/yaml/test_yaml.rb:140]:
<{"american"=>["Boston Red Sox", "Detroit Tigers", "New York Yankees"],
  "national"=>["New York Mets", "Chicago Cubs", "Atlanta Braves"]}> 
expected but was
<{"taguri"=>"!ruby/object:Hash", "to_yaml_style"=>1}>.

  61) Failure:
test_spec_simple_sequence_with_nested_map(YAML_Unit_Tests) 
[/home/naruse/ruby/test/yaml/test_yaml.rb:159]:
<[{"name"=>"Mark McGwire", "hr"=>65, "avg"=>0.278},
  {"name"=>"Sammy Sosa", "hr"=>63, "avg"=>0.288}]> expected but was
<[["taguri", "!ruby/object:Array"], ["to_yaml_style", 1]]>.

  62) Error:
test_spec_url_escaping(YAML_Unit_Tests):
Psych::SyntaxError: couldn't parse YAML at line 1 column 25
     /home/naruse/obj/ruby/.ext/common/psych.rb:147:in `parse'
     /home/naruse/obj/ruby/.ext/common/psych.rb:147:in `parse_stream'
     /home/naruse/obj/ruby/.ext/common/psych.rb:118:in `parse'
     /home/naruse/obj/ruby/.ext/common/psych.rb:105:in `load'
     /home/naruse/ruby/test/yaml/test_yaml.rb:33:in `assert_parse_only'
     /home/naruse/ruby/test/yaml/test_yaml.rb:725:in 
`test_spec_url_escaping'

  63) Error:
test_symbol_cycle(YAML_Unit_Tests):
TypeError: can't define singleton
     /home/naruse/obj/ruby/.ext/common/psych/deprecated.rb:10:in 
`extend_object'
     /home/naruse/obj/ruby/.ext/common/psych/deprecated.rb:10:in 
`extend'
     /home/naruse/obj/ruby/.ext/common/psych/deprecated.rb:10:in 
`quick_emit'
     /home/naruse/obj/ruby/.ext/common/syck/rubytypes.rb:15:in `to_yaml'
     /home/naruse/obj/ruby/.ext/common/syck/rubytypes.rb:199:in 
`to_yaml'
     /home/naruse/ruby/test/yaml/test_yaml.rb:38:in `assert_cycle'
     /home/naruse/ruby/test/yaml/test_yaml.rb:1262:in 
`test_symbol_cycle'

  64) Failure:
test_time_now_cycle(YAML_Unit_Tests) 
[/home/naruse/ruby/test/yaml/test_yaml.rb:1220]:
<2010-04-10 07:02:05 +0900> expected but was
<1970-01-01 09:00:00 +0900>.

  65) Error:
test_ypath_parsing(YAML_Unit_Tests):
NameError: uninitialized constant Psych::YPath
     /home/naruse/ruby/test/yaml/test_yaml.rb:42:in 
`assert_path_segments'
     /home/naruse/ruby/test/yaml/test_yaml.rb:1165:in 
`test_ypath_parsing'
Posted by Aaron Patterson (Guest)
on 2010-04-11 01:48
(Received via mailing list)
On Sat, Apr 10, 2010 at 07:11:28PM +0900, NARUSE, Yui wrote:
> 
> -
> 
>   4) Failure:
>     /home/naruse/obj/ruby/.ext/common/psych.rb:147:in `parse'
>     /home/naruse/obj/ruby/.ext/common/psych/deprecated.rb:10:in `quick_emit'
> install.
> test_sign_in_with_other_credentials_doesnt_overwrite_other_keys(TestGemGemcutterUtilities) [/home/naruse/ruby/test/rubygems/test_gem_gemcutter_utilities.rb:64]:
>  17) Error:
>     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in `visit_Psych_Nodes_Mapping'
>     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in `revive'
>     /home/naruse/obj/ruby/.ext/common/psych.rb:106:in `load'
>     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in `block in revive'
> test_path_ok_eh_user(TestGemUninstaller):
>     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in `accept'
>     /home/naruse/obj/ruby/.ext/common/psych/visitors/visitor.rb:7:in `accept'
>  22) Error:
>     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in `visit_Psych_Nodes_Mapping'
>     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:175:in `visit_Psych_Nodes_Mapping'
> 
>     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in `revive'
>     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in `revive'
>     /home/naruse/obj/ruby/.ext/common/psych.rb:106:in `load'
>     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:217:in `map'
>     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:216:in `allocate'
>     /home/naruse/obj/ruby/.ext/common/psych/nodes/node.rb:25:in `to_ruby'
>     /home/naruse/obj/ruby/.ext/common/psych/visitors/to_ruby.rb:16:in `accept'
> test_get(TestNetHTTPS):
>  31) Error:
> test_data_should_be_loaded_correctly_when_in_readwrite_mode(YAMLStoreTest):
> NameError: uninitialized constant Psych::Store
> <{"taguri"=>"!ruby/object:Hash", "to_yaml_style"=>1}>.
> 
>  42) Failure:
> test_numeric_cycle(YAML_Unit_Tests):
> test_range_cycle(YAML_Unit_Tests) [/home/naruse/ruby/test/yaml/test_yaml.rb:1231]:
> TypeError: can't define singleton method "encode_with" for Complex
> TypeError: can't define singleton method "encode_with" for Rational
> <{"simple"=>/a.b/,
>   isbn="0-596-00214-9">,
> <[["taguri", "!ruby/object:Array"], ["to_yaml_style", 1]]>.
> Psych::SyntaxError: couldn't parse YAML at line 0 column 29
>  "is equal to"=>
>   "The  ' \" characters may be\nfreely used. Leading white\n   space is significant.\n\nLine breaks are significant.\nThus this value contains one\nempty line and ends with a\nsingle line break, but does\nnot start with one.\n",
>     /home/naruse/obj/ruby/.ext/common/psych.rb:105:in `load'
>     /home/naruse/ruby/test/yaml/test_yaml.rb:33:in `assert_parse_only'
>     /home/naruse/obj/ruby/.ext/common/psych.rb:147:in `parse'
>  59) Failure:
>  61) Failure:
>     /home/naruse/obj/ruby/.ext/common/psych.rb:118:in `parse'
>     /home/naruse/obj/ruby/.ext/common/syck/rubytypes.rb:15:in `to_yaml'
> test_ypath_parsing(YAML_Unit_Tests):
> NameError: uninitialized constant Psych::YPath
>     /home/naruse/ruby/test/yaml/test_yaml.rb:42:in `assert_path_segments'
>     /home/naruse/ruby/test/yaml/test_yaml.rb:1165:in `test_ypath_parsing'

I am surprised about the rubygems failures.  With the following patch, I
am able to run the rubygems tests, like this:

$ GEM_HOME=/tmp GEM_PATH=/tmp make test-all TESTS=rubygems

diff --git a/lib/yaml.rb b/lib/yaml.rb
index 9b5a9b2..0151973 100644
--- a/lib/yaml.rb
+++ b/lib/yaml.rb
@@ -40,4 +40,4 @@ module Psych
   ENGINE = YAML::ENGINE
 end

-YAML::ENGINE.yamler = engine
+YAML::ENGINE.yamler = 'psych'
diff --git a/test/rubygems/gemutilities.rb 
b/test/rubygems/gemutilities.rb
index bb94750..cea1dbe 100644
--- a/test/rubygems/gemutilities.rb
+++ b/test/rubygems/gemutilities.rb
@@ -8,13 +8,7 @@ else
   require 'rubygems'
 end
 require 'fileutils'
-begin
-  gem 'minitest', '>= 1.3.1'
-  require 'minitest/unit'
-rescue Gem::LoadError
-  warn "Install minitest gem >= 1.3.1"
-  raise
-end
+require 'minitest/unit'
 require 'tmpdir'
 require 'uri'
 require 'rubygems/package'
diff --git a/test/rubygems/test_gem_specification.rb 
b/test/rubygems/test_gem_specification.rb
index 5979890..337073f 100644
--- a/test/rubygems/test_gem_specification.rb
+++ b/test/rubygems/test_gem_specification.rb
@@ -1,5 +1,6 @@
 require_relative 'gemutilities'
 require 'stringio'
+require 'date'
 require 'rubygems/specification'

 class TestGemSpecification < RubyGemTestCase


Some of the Syck YAML tests (like test_spec_application_family and
test_spec_url_escaping) contain invalid YAML, so Psych will raise an
exception.  Do `diff test/yaml/test_yaml.rb test/psych/test_yaml.rb` to
see the differences.

I will make test/yaml/* use the syck engine.

I can't run make test-all on Snow Leopard because of the problem I
mentioned in [ruby-core:29087].  I will try on linux.
Posted by NARUSE, Yui (Guest)
on 2010-04-11 02:21
(Received via mailing list)
(2010/04/11 8:48), Aaron Patterson wrote:
>     ENGINE = YAML::ENGINE
>   end
>   require 'uri'
>   require 'rubygems/package'

Bundled minitest is 1.6.0(-dev?) after r27076, so why this is needed...

>   class TestGemSpecification<  RubyGemTestCase
> 
> 
> Some of the Syck YAML tests (like test_spec_application_family and
> test_spec_url_escaping) contain invalid YAML, so Psych will raise an
> exception.  Do `diff test/yaml/test_yaml.rb test/psych/test_yaml.rb` to
> see the differences.

Yeah, I know some of them are intended.
I want to confirm taht all of them are from invalid YAML.

> I will make test/yaml/* use the syck engine.

OK, it may have to move to test/syck.

> I can't run make test-all on Snow Leopard because of the problem I
> mentioned in [ruby-core:29087].  I will try on linux.

Can you make a ticket in Redmine for [ruby-core:29087]?

For workaround you can run test-all like following:
make RUBYOPT=-w TESTS='-v -x "test/drb|test/socket"' test-all
Posted by Aaron Patterson (Guest)
on 2010-04-11 02:58
(Received via mailing list)
On Sun, Apr 11, 2010 at 09:20:15AM +0900, NARUSE, Yui wrote:
> > @@ -40,4 +40,4 @@ module Psych
> >     require 'rubygems'
> >   require 'tmpdir'
> >   require 'uri'
> >   require 'rubygems/package'
> 
> Bundled minitest is 1.6.0(-dev?) after r27076, so why this is needed...

I'm not sure.  I've applied this to trunk with Eric's permission.

> >   class TestGemSpecification<  RubyGemTestCase
> > I will make test/yaml/* use the syck engine.
> 
> OK, it may have to move to test/syck.

Yes.  I've moved test/yaml to test/syck.

> > I can't run make test-all on Snow Leopard because of the problem I
> > mentioned in [ruby-core:29087].  I will try on linux.
> 
> Can you make a ticket in Redmine for [ruby-core:29087]?

Done:  http://redmine.ruby-lang.org/issues/show/3124

> For workaround you can run test-all like following:
> make RUBYOPT=-w TESTS='-v -x "test/drb|test/socket"' test-all

I will use this.  Thank you!
Posted by Eric Hodel (Guest)
on 2010-04-11 03:24
(Received via mailing list)
On Apr 10, 2010, at 17:58, Aaron Patterson wrote:
diff --git a/test/rubygems/gemutilities.rb 
b/test/rubygems/gemutilities.rb
>>> -rescue Gem::LoadError
> I'm not sure.  I've applied this to trunk with Eric's permission.
Won't the bundled minitest will only be available after install?
Posted by NARUSE, Yui (Guest)
on 2010-04-11 06:59
(Received via mailing list)
(2010/04/11 10:23), Eric Hodel wrote:
>>>> -  gem 'minitest', '>= 1.3.1'
>>> Bundled minitest is 1.6.0(-dev?) after r27076, so why this is needed...
>>
>> I'm not sure.  I've applied this to trunk with Eric's permission.
>
> Won't the bundled minitest will only be available after install?

Ah, yes, so this can be a bug of Gem's load path.
Also note that this can be avoided by install before test-all.
Posted by NARUSE, Yui (Guest)
on 2010-04-11 07:04
(Received via mailing list)
(2010/04/11 8:48), Aaron Patterson wrote:
>   class TestGemSpecification<  RubyGemTestCase
This is from the difference of loaded libraries between syck and psych.
So this is considered as compatibility problem and this is fixed by 
psych.

Example is following but where "require 'date' is is upon you.

diff --git a/ext/psych/lib/psych/deprecated.rb 
b/ext/psych/lib/psych/deprecated.rb
index 5a96e91..c0c9abe 100644
--- a/ext/psych/lib/psych/deprecated.rb
+++ b/ext/psych/lib/psych/deprecated.rb
@@ -1,3 +1,5 @@
+require 'date'
+
 module Psych
   module DeprecatedMethods # :nodoc:
     attr_accessor :taguri
Posted by Aaron Patterson (Guest)
on 2010-04-11 21:08
(Received via mailing list)
On Sun, Apr 11, 2010 at 02:04:06PM +0900, NARUSE, Yui wrote:
> > 
> +++ b/ext/psych/lib/psych/deprecated.rb
> @@ -1,3 +1,5 @@
> +require 'date'
> +
>  module Psych
>    module DeprecatedMethods # :nodoc:
>      attr_accessor :taguri

Yes.  I will apply this patch, though not requiring 'date' did lead me
to find strange code.  From lib/rubygems/specification.rb (around line 
12):

    require 'rubygems/version'
    require 'rubygems/requirement'
    require 'rubygems/platform'

    # :stopdoc:
    class Date; end # for ruby_code if date.rb wasn't required
    # :startdoc:

It seems to be a bug of rubygems to not require 'date'.  I will add
the require to psych for backwards compatibility, but relying on the
YAML parser to require date doesn't seem good.
Posted by Yui NARUSE (Guest)
on 2010-04-14 03:23
(Received via mailing list)
Issue #3112 has been updated by Yui NARUSE.


Current syck is mixed old YAML and YAML::Syck.
This breaks compatibility like following:
http://pc12.2ch.net/test/read.cgi/tech/1265467681/871

It also says require 'yaml/syck' should work.

People may require'yaml' and use YAML::Syck, but we should give up such 
case.
----------------------------------------
http://redmine.ruby-lang.org/issues/show/3112
Posted by Aaron Patterson (Guest)
on 2010-05-06 08:46
(Received via mailing list)
On Thu, Apr 08, 2010 at 11:14:59AM +0900, Usaku NAKAMURA wrote:
> Bug #3112: require "yaml" doesn't use psych as default
> http://redmine.ruby-lang.org/issues/show/3112
> 
> Author: Usaku NAKAMURA
> Status: Open, Priority: Normal
> Category: lib, Target version: 1.9.2
> ruby -v: ruby 1.9.2dev (2010-04-08 trunk 27255)
> 
> why?

Rails runs with Psych as default.  Our applications at work run well
with Psych as default.

I would like to make Psych default YAML parser for 1.9.2.  What do you
think?
Posted by U.Nakamura (Guest)
on 2010-05-06 10:00
(Received via mailing list)
Hello,

In message "[ruby-core:30044] Re: [Bug #3112] require "yaml" doesn't use 
psych as default"
    on May.06,2010 15:46:00, <aaron@tenderlovemaking.com> wrote:
> Rails runs with Psych as default.  Our applications at work run well
> with Psych as default.
> 
> I would like to make Psych default YAML parser for 1.9.2.  What do you
> think?

IMO, if Psych is enough compatible with Syck, Psych should be
the default YAML parser, like the way of the decision performed
about ext/fiddle and ext/dl recently.

However, naruse has already explained the intention of yugui at
[ruby-core:29377].
I don't want to disobey the branch/release manager about this
matter :)


Regards,
Posted by Aaron Patterson (Guest)
on 2010-05-06 17:41
(Received via mailing list)
On Thu, May 06, 2010 at 05:00:24PM +0900, U.Nakamura wrote:
> > > ruby -v: ruby 1.9.2dev (2010-04-08 trunk 27255)
> the default YAML parser, like the way of the decision performed
> about ext/fiddle and ext/dl recently.
> 
> However, naruse has already explained the intention of yugui at
> [ruby-core:29377].
> I don't want to disobey the branch/release manager about this
> matter :)

I agree.  So we await Yugui's decision.  :-)
Posted by Yuki Sonoda (Guest)
on 2010-05-18 13:30
(Received via mailing list)
Issue #3112 has been updated by Yuki Sonoda.

Target version changed from 1.9.2 to 1.9.x

I think syck works more or less correctly unlike dl2. So I want to 
decide it conservatively. I don't want to switch the default yaml engine 
to psych.
----------------------------------------
http://redmine.ruby-lang.org/issues/show/3112
Posted by Yehuda Katz (wycats)
on 2010-05-18 20:22
(Received via mailing list)
Yugui,

I am worried about possible encoding issues that can come in Syck that 
will
be hard to fix. For instance, Aaron was able to fix Psych to honor
default_internal in just a few days, and there is no real maintainer for
Syck.

Since Aaron is the maintainer for Psych, and there is no maintainer for
Syck, I think it makes sense to make Psych the default, with the yamler=
option for backward compatibility.

Yehuda Katz
Architect | Engine Yard
(ph) 718.877.1325
Posted by Aaron Patterson (Guest)
on 2010-05-18 20:32
(Received via mailing list)
On Tue, May 18, 2010 at 08:30:14PM +0900, Yuki Sonoda wrote:
> Issue #3112 has been updated by Yuki Sonoda.
> 
> Target version changed from 1.9.2 to 1.9.x
> 
> I think syck works more or less correctly unlike dl2. So I want to decide it conservatively. I don't want to switch the default yaml engine to psych.

I'm afraid that if we use Syck as default, no one will see errors from
invalid YAML files.  If we make Psych as default, people will see errors
with their YAML files but *have the option* to move back to Syck.

Are we going to remove Syck in 1.9.3?  If we don't make Psych default in
1.9.2, it seems to me that we have to wait until 1.9.4 to remove Syck.

Since Syck has no active maintainer, it seems bad to wait so long to
remove it.
Posted by Yehuda Katz (wycats)
on 2010-05-24 01:29
(Received via mailing list)
Bump.

I think the lack of a Syck maintainer, yet making Syck the default in 
1.9.2
needs to be addressed. 1.9.2 is probably going to be the de-facto 
release
for some time. What's the rationale for keeping an unmaintained major
component when a maintained version is available in the standard 
library?

Yehuda Katz
Architect | Engine Yard
(ph) 718.877.1325


On Tue, May 18, 2010 at 11:31 AM, Aaron Patterson <
Posted by Anshul Khandelwal (Guest)
on 2010-08-27 14:14
(Received via mailing list)
Issue #3112 has been updated by Anshul Khandelwal.


Any updates on this?  Is there some way I can ensure that my code is 
using the bundled psych?

Anshul
----------------------------------------
http://redmine.ruby-lang.org/issues/show/3112
Posted by Aaron Patterson (Guest)
on 2010-08-29 00:24
(Received via mailing list)
On Fri, Aug 27, 2010 at 09:09:27PM +0900, Anshul Khandelwal wrote:
> Issue #3112 has been updated by Anshul Khandelwal.
> 
> 
> Any updates on this?  Is there some way I can ensure that my code is using the bundled psych?

Psych is an "opt-in" experience for 1.9.2.  I'm not sure when we'll make
it the default YAML object.

There are two ways you can use Psych.  The first way is to just require
psych and reference the Psych constant:

    require 'psych'

    Psych.load '--- hello world!'
    Psych.dump { :goodbye => 'cruel world' }

The second way is to change the YAML engine:

    require 'yaml'

    YAML::ENGINE.yamler = 'psych'
    YAML.load '--- hello world!'
    YAML.dump { :goodbye => 'cruel world' }

Setting the engine will replace the YAML constant with the Psych
constant.  Using the first example will absolutely guarantee using
Psych.  The second example cannot guarantee usage because other
libraries could possibly set the engine back to "syck" without your
knowledge.
Posted by Nobuyoshi Nakada (nobu)
on 2010-08-29 09:11
(Received via mailing list)
(10/08/29 7:24), Aaron Patterson wrote:
> 
>     require 'yaml'
> 
>     YAML::ENGINE.yamler = 'psych'
>     YAML.load '--- hello world!'
>     YAML.dump { :goodbye => 'cruel world' }

And the third way is to require psych before yaml:

    require 'psych'
    require 'yaml'

    # p YAML::ENGINE.yamler # => 'psych'
    YAML.load '--- hello world!'
    YAML.dump { :goodbye => 'cruel world' }
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.