From 15960b37e82ba60455c480b1c23e1567255d3e05 Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 29 Dec 2015 03:48:36 +0000 Subject: [PATCH] ostruct.rb: respond_to? * lib/ostruct.rb (OpenStruct): make respond_to? working on just-allocated objects for workaround of Psych. [ruby-core:72501] [Bug #11884] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53366 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 12 ++++++++++++ lib/ostruct.rb | 5 +++++ test/ostruct/test_ostruct.rb | 4 ++++ 3 files changed, 21 insertions(+) diff --git a/ChangeLog b/ChangeLog index 7c63a77cf3..146552f396 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +Tue Dec 29 12:48:34 2015 Nobuyoshi Nakada + + * lib/ostruct.rb (OpenStruct): make respond_to? working on + just-allocated objects for workaround of Psych. + [ruby-core:72501] [Bug #11884] + +Tue Dec 29 12:46:13 2015 Nobuyoshi Nakada + + * lib/ostruct.rb (OpenStruct): make respond_to? working on + just-allocated objects for workaround of Psych. + [ruby-core:72501] [Bug #11884] + Tue Dec 29 10:35:00 2015 Kenta Murata * test/mkmf/test_have_func.rb (test_have_func): diff --git a/lib/ostruct.rb b/lib/ostruct.rb index 5aea0465bd..e7b8ed4609 100644 --- a/lib/ostruct.rb +++ b/lib/ostruct.rb @@ -71,6 +71,11 @@ # of these properties compared to using a Hash or a Struct. # class OpenStruct + # :nodoc: + class << self + alias allocate new + end + # # Creates a new OpenStruct object. By default, the resulting OpenStruct # object will have no attributes. diff --git a/test/ostruct/test_ostruct.rb b/test/ostruct/test_ostruct.rb index 8c122b94a7..8b0424d2d8 100644 --- a/test/ostruct/test_ostruct.rb +++ b/test/ostruct/test_ostruct.rb @@ -23,6 +23,10 @@ class TC_OpenStruct < Test::Unit::TestCase assert_respond_to(o, :a=) end + def test_respond_to_allocated + assert_not_respond_to(OpenStruct.allocate, :a) + end + def test_equality o1 = OpenStruct.new o2 = OpenStruct.new