提交 68a320ad 编写于 作者: M Marcel Molina

Fix invoke_layered since api_method didn't declare :expects. Closes #4720....

Fix invoke_layered since api_method didn't declare :expects. Closes #4720. [Kevin Ballard <kevin@sb.org>, Kent Sibilev]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4497 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
上级 236c7325
*SVN*
* Fix invoke_layered since api_method didn't declare :expects. Closes #4720. [Kevin Ballard <kevin@sb.org>, Kent Sibilev]
* Replace alias method chaining with Module#alias_method_chain. [Marcel Molina Jr.]
* Replace Ruby's deprecated append_features in favor of included. [Marcel Molina Jr.]
......
......@@ -52,7 +52,7 @@ def encode_rpc_call(service_name, api_method_name, *args)
end
protocol.register_api(api)
method = api.api_methods[api_method_name.to_sym]
raise ArgumentError, "wrong number of arguments for rpc call (#{args.length} for #{method.expects.length})" unless args.length == method.expects.length
raise ArgumentError, "wrong number of arguments for rpc call (#{args.length} for #{method.expects.length})" if method && method.expects && args.length != method.expects.length
protocol.encode_request(public_method_name(service_name, api_method_name), args.dup, method.expects)
end
......
......@@ -2,6 +2,7 @@
require 'action_web_service/test_invoke'
class TestInvokeAPI < ActionWebService::API::Base
api_method :null
api_method :add, :expects => [:int, :int], :returns => [:int]
end
......@@ -14,6 +15,9 @@ def add(a, b)
@invoked = true
a + b
end
def null
end
end
class TestController < ActionController::Base
......@@ -29,6 +33,9 @@ def add
@invoked = true
@method_params[0] + @method_params[1]
end
def null
end
end
class TestInvokeDelegatedController < TestController
......@@ -97,4 +104,9 @@ def test_direct_fail_with_wrong_number_of_arguments
assert_raise(ArgumentError) { invoke :add, 1 }
end
def test_with_no_parameters_declared
@controller = TestInvokeDirectController.new
assert_nil invoke(:null)
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册