Fix DRbServer#any_to_s
My previous fix in d0ed935d5bf8c3fce9800742a36e44fb7f63dda4 was not correct, as pointed out by cremno on GitHub. This simplifies things by just using Kernel#to_s. Also switch to bind_call(obj) instead of bind(obj).call for better performance.
This commit is contained in:
parent
567e312d1f
commit
d5744aff3a
Notes:
git
2019-10-17 04:51:34 +09:00
@ -1606,15 +1606,9 @@ module DRb
|
|||||||
# Coerce an object to a string, providing our own representation if
|
# Coerce an object to a string, providing our own representation if
|
||||||
# to_s is not defined for the object.
|
# to_s is not defined for the object.
|
||||||
def any_to_s(obj)
|
def any_to_s(obj)
|
||||||
obj.to_s + ":#{obj.class}"
|
"#{obj}:#{obj.class}"
|
||||||
rescue
|
rescue
|
||||||
case obj
|
Kernel.instance_method(:to_s).bind_call(obj)
|
||||||
when Object
|
|
||||||
klass = obj.class
|
|
||||||
else
|
|
||||||
klass = Kernel.instance_method(:class).bind(obj).call
|
|
||||||
end
|
|
||||||
sprintf("#<%s:0x%dx>", klass, obj.__id__)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Check that a method is callable via dRuby.
|
# Check that a method is callable via dRuby.
|
||||||
|
@ -327,6 +327,20 @@ class TestBug4409 < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class TestDRbAnyToS < Test::Unit::TestCase
|
||||||
|
class BO < BasicObject
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_any_to_s
|
||||||
|
server = DRb::DRbServer.new('druby://:0')
|
||||||
|
server.singleton_class.send(:public, :any_to_s)
|
||||||
|
assert_equal("foo:String", server.any_to_s("foo"))
|
||||||
|
assert_match(/\A#<DRbTests::TestDRbAnyToS::BO:0x[0-9a-f]+>\z/, server.any_to_s(BO.new))
|
||||||
|
server.stop_service
|
||||||
|
server.thread.join
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
class TestDRbTCP < Test::Unit::TestCase
|
class TestDRbTCP < Test::Unit::TestCase
|
||||||
def test_immediate_close
|
def test_immediate_close
|
||||||
server = DRb::DRbServer.new('druby://:0')
|
server = DRb::DRbServer.new('druby://:0')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user