summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/drb/drb.rb2
-rw-r--r--test/drb/test_drb.rb16
-rw-r--r--test/drb/ut_drb.rb12
3 files changed, 29 insertions, 1 deletions
diff --git a/lib/drb/drb.rb b/lib/drb/drb.rb
index e2aaf701ce..4d3ea364f1 100644
--- a/lib/drb/drb.rb
+++ b/lib/drb/drb.rb
@@ -1131,7 +1131,7 @@ module DRb
end
# Routes method calls to the referenced remote object.
- def method_missing(msg_id, *a, &b)
+ ruby2_keywords def method_missing(msg_id, *a, &b)
if DRb.here?(@uri)
obj = DRb.to_obj(@ref)
DRb.current_server.check_insecure_method(obj, msg_id)
diff --git a/test/drb/test_drb.rb b/test/drb/test_drb.rb
index b792349f28..47b2966ae2 100644
--- a/test/drb/test_drb.rb
+++ b/test/drb/test_drb.rb
@@ -349,4 +349,20 @@ class TestDRbTCP < Test::Unit::TestCase
end
end
+class TestBug16634 < Test::Unit::TestCase
+ include DRbBase
+
+ def setup
+ super
+ setup_service 'ut_drb.rb'
+ end
+
+ def test_bug16634
+ assert_equal(42, @there.keyword_test1(a: 42))
+ assert_equal("default", @there.keyword_test2)
+ assert_equal(42, @there.keyword_test2(b: 42))
+ assert_equal({:a=>42, :b=>42}, @there.keyword_test3(a: 42, b: 42))
+ end
+end
+
end
diff --git a/test/drb/ut_drb.rb b/test/drb/ut_drb.rb
index b1306d0cb0..e7bd2dff73 100644
--- a/test/drb/ut_drb.rb
+++ b/test/drb/ut_drb.rb
@@ -148,6 +148,18 @@ class DRbEx
end
end
+ def keyword_test1(a:)
+ a
+ end
+
+ def keyword_test2(b: "default")
+ b
+ end
+
+ def keyword_test3(**opt)
+ opt
+ end
+
private
def call_private_method
true