actionwebservice 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. data/{ChangeLog → CHANGELOG} +20 -0
  2. data/README +45 -1
  3. data/Rakefile +12 -10
  4. data/TODO +8 -9
  5. data/lib/action_web_service.rb +10 -6
  6. data/lib/action_web_service/api.rb +1 -2
  7. data/lib/action_web_service/api/{abstract.rb → base.rb} +14 -71
  8. data/lib/action_web_service/base.rb +0 -3
  9. data/lib/action_web_service/client/base.rb +1 -12
  10. data/lib/action_web_service/client/soap_client.rb +49 -17
  11. data/lib/action_web_service/client/xmlrpc_client.rb +20 -15
  12. data/lib/action_web_service/container.rb +3 -85
  13. data/lib/action_web_service/{api/action_controller.rb → container/action_controller_container.rb} +2 -2
  14. data/lib/action_web_service/container/delegated_container.rb +87 -0
  15. data/lib/action_web_service/container/direct_container.rb +70 -0
  16. data/lib/action_web_service/dispatcher/abstract.rb +100 -102
  17. data/lib/action_web_service/dispatcher/action_controller_dispatcher.rb +199 -137
  18. data/lib/action_web_service/protocol.rb +1 -1
  19. data/lib/action_web_service/protocol/abstract.rb +14 -112
  20. data/lib/action_web_service/protocol/discovery.rb +37 -0
  21. data/lib/action_web_service/protocol/soap_protocol.rb +32 -458
  22. data/lib/action_web_service/protocol/xmlrpc_protocol.rb +29 -149
  23. data/lib/action_web_service/struct.rb +2 -5
  24. data/lib/action_web_service/test_invoke.rb +130 -0
  25. data/lib/action_web_service/vendor/ws.rb +4 -0
  26. data/lib/action_web_service/vendor/ws/common.rb +8 -0
  27. data/lib/action_web_service/vendor/ws/encoding.rb +3 -0
  28. data/lib/action_web_service/vendor/ws/encoding/abstract.rb +26 -0
  29. data/lib/action_web_service/vendor/ws/encoding/soap_rpc_encoding.rb +90 -0
  30. data/lib/action_web_service/vendor/ws/encoding/xmlrpc_encoding.rb +53 -0
  31. data/lib/action_web_service/vendor/ws/marshaling.rb +3 -0
  32. data/lib/action_web_service/vendor/ws/marshaling/abstract.rb +17 -0
  33. data/lib/action_web_service/vendor/ws/marshaling/soap_marshaling.rb +277 -0
  34. data/lib/action_web_service/vendor/ws/marshaling/xmlrpc_marshaling.rb +116 -0
  35. data/lib/action_web_service/vendor/ws/types.rb +162 -0
  36. data/test/abstract_client.rb +8 -11
  37. data/test/abstract_dispatcher.rb +370 -0
  38. data/test/abstract_unit.rb +1 -0
  39. data/test/api_test.rb +18 -1
  40. data/test/apis/auto_load_api.rb +3 -0
  41. data/test/apis/broken_auto_load_api.rb +2 -0
  42. data/test/client_soap_test.rb +16 -3
  43. data/test/client_xmlrpc_test.rb +16 -4
  44. data/test/container_test.rb +28 -8
  45. data/test/dispatcher_action_controller_soap_test.rb +106 -0
  46. data/test/dispatcher_action_controller_xmlrpc_test.rb +44 -0
  47. data/test/gencov +1 -1
  48. data/test/invocation_test.rb +39 -3
  49. data/test/run +4 -4
  50. data/test/test_invoke_test.rb +77 -0
  51. data/test/ws/abstract_encoding.rb +68 -0
  52. data/test/ws/abstract_unit.rb +13 -0
  53. data/test/ws/gencov +3 -0
  54. data/test/ws/run +5 -0
  55. data/test/ws/soap_marshaling_test.rb +91 -0
  56. data/test/ws/soap_rpc_encoding_test.rb +47 -0
  57. data/test/ws/types_test.rb +41 -0
  58. data/test/ws/xmlrpc_encoding_test.rb +34 -0
  59. metadata +48 -19
  60. data/lib/action_web_service/protocol/registry.rb +0 -55
  61. data/lib/action_web_service/support/signature.rb +0 -100
  62. data/test/abstract_soap.rb +0 -58
  63. data/test/dispatcher_action_controller_test.rb +0 -186
  64. data/test/protocol_registry_test.rb +0 -53
  65. data/test/protocol_soap_test.rb +0 -252
  66. data/test/protocol_xmlrpc_test.rb +0 -147
@@ -0,0 +1,77 @@
1
+ require File.dirname(__FILE__) + '/abstract_unit'
2
+ require 'action_web_service/test_invoke'
3
+
4
+ class TestInvokeAPI < ActionWebService::API::Base
5
+ api_method :add, :expects => [:int, :int], :returns => [:int]
6
+ end
7
+
8
+ class TestInvokeService < ActionWebService::Base
9
+ web_service_api TestInvokeAPI
10
+
11
+ attr :invoked
12
+
13
+ def add(a, b)
14
+ @invoked = true
15
+ a + b
16
+ end
17
+ end
18
+
19
+ class TestController < ActionController::Base
20
+ def rescue_action(e); raise e; end
21
+ end
22
+
23
+ class TestInvokeDirectController < TestController
24
+ web_service_api TestInvokeAPI
25
+
26
+ attr :invoked
27
+
28
+ def add
29
+ @invoked = true
30
+ @method_params[0] + @method_params[1]
31
+ end
32
+ end
33
+
34
+ class TestInvokeDelegatedController < TestController
35
+ web_service_dispatching_mode :delegated
36
+ web_service :service, TestInvokeService.new
37
+ end
38
+
39
+ class TestInvokeLayeredController < TestController
40
+ web_service_dispatching_mode :layered
41
+ web_service :one, TestInvokeService.new
42
+ web_service :two, TestInvokeService.new
43
+ end
44
+
45
+ class TestInvokeTest < Test::Unit::TestCase
46
+ def setup
47
+ @request = ActionController::TestRequest.new
48
+ @response = ActionController::TestResponse.new
49
+ end
50
+
51
+ def test_direct_add
52
+ @controller = TestInvokeDirectController.new
53
+ assert_equal nil, @controller.invoked
54
+ result = invoke :add, 25, 25
55
+ assert_equal 50, result
56
+ assert_equal true, @controller.invoked
57
+ end
58
+
59
+ def test_delegated_add
60
+ @controller = TestInvokeDelegatedController.new
61
+ assert_equal nil, @controller.web_service_object(:service).invoked
62
+ result = invoke_delegated :service, :add, 100, 50
63
+ assert_equal 150, result
64
+ assert_equal true, @controller.web_service_object(:service).invoked
65
+ end
66
+
67
+ def test_layered_add
68
+ @protocol = :xmlrpc
69
+ @controller = TestInvokeLayeredController.new
70
+ [:one, :two].each do |service|
71
+ assert_equal nil, @controller.web_service_object(service).invoked
72
+ result = invoke_layered service, :add, 200, -50
73
+ assert_equal 150, result
74
+ assert_equal true, @controller.web_service_object(service).invoked
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,68 @@
1
+ require File.dirname(__FILE__) + '/abstract_unit'
2
+
3
+ module Nested
4
+ class StructClass
5
+ attr_accessor :name
6
+ attr_accessor :version
7
+
8
+ def initialize
9
+ @name = 5
10
+ @version = "1.0"
11
+ end
12
+
13
+ def ==(other)
14
+ @name == other.name && @version == other.version
15
+ end
16
+ end
17
+ end
18
+
19
+ module EncodingTest
20
+ def setup
21
+ @call_signature = [:int, :bool, :string, :float, [:time], Nested::StructClass]
22
+ @call_params = [1, true, "string", 5.0, [Time.now], Nested::StructClass.new]
23
+ @response_signature = [:string]
24
+ @response_param = "hello world"
25
+ test_setup
26
+ end
27
+
28
+ def test_abstract
29
+ obj = WS::Encoding::AbstractEncoding.new
30
+ assert_raises(NotImplementedError) do
31
+ obj.encode_rpc_call(nil, nil)
32
+ end
33
+ assert_raises(NotImplementedError) do
34
+ obj.decode_rpc_call(nil)
35
+ end
36
+ assert_raises(NotImplementedError) do
37
+ obj.encode_rpc_response(nil, nil)
38
+ end
39
+ assert_raises(NotImplementedError) do
40
+ obj.decode_rpc_response(nil)
41
+ end
42
+ end
43
+
44
+ def encode_rpc_call(method_name, signature, params)
45
+ params = params.dup
46
+ (0..(signature.length-1)).each do |i|
47
+ type_binding = @marshaler.register_type(signature[i])
48
+ info = WS::ParamInfo.create(signature[i], type_binding, i)
49
+ params[i] = @marshaler.marshal(WS::Param.new(params[i], info))
50
+ end
51
+ @encoder.encode_rpc_call(method_name, params)
52
+ end
53
+
54
+ def decode_rpc_call(obj)
55
+ @encoder.decode_rpc_call(obj)
56
+ end
57
+
58
+ def encode_rpc_response(method_name, signature, param)
59
+ type_binding = @marshaler.register_type(signature[0])
60
+ info = WS::ParamInfo.create(signature[0], type_binding, 0)
61
+ param = @marshaler.marshal(WS::Param.new(param, info))
62
+ @encoder.encode_rpc_response(method_name, param)
63
+ end
64
+
65
+ def decode_rpc_response(obj)
66
+ @encoder.decode_rpc_response(obj)
67
+ end
68
+ end
@@ -0,0 +1,13 @@
1
+ require 'pathname'
2
+ $:.unshift(Pathname.new(File.dirname(__FILE__)).realpath.to_s + '/../../lib/action_web_service/vendor')
3
+ require 'test/unit'
4
+ require 'ws'
5
+ begin
6
+ require 'active_record'
7
+ rescue LoadError
8
+ begin
9
+ require 'rubygems'
10
+ require_gem 'activerecord', '>= 1.6.0'
11
+ rescue LoadError
12
+ end
13
+ end
@@ -0,0 +1,3 @@
1
+ #!/bin/sh
2
+
3
+ rcov -x '.*_test\.rb,rubygems,abstract_,/run' ./run
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ Dir[File.join(File.dirname(__FILE__), '*_test.rb')].each do |f|
4
+ require f
5
+ end
@@ -0,0 +1,91 @@
1
+ require File.dirname(__FILE__) + '/abstract_unit'
2
+
3
+ module Nested
4
+ class MyClass
5
+ attr_accessor :id
6
+ attr_accessor :name
7
+
8
+ def initialize(id, name)
9
+ @id = id
10
+ @name = name
11
+ end
12
+
13
+ def ==(other)
14
+ @id == other.id && @name == other.name
15
+ end
16
+ end
17
+ end
18
+
19
+ class SoapMarshalingTest < Test::Unit::TestCase
20
+ def setup
21
+ @marshaler = WS::Marshaling::SoapMarshaler.new
22
+ end
23
+
24
+ def test_abstract
25
+ marshaler = WS::Marshaling::AbstractMarshaler.new
26
+ assert_raises(NotImplementedError) do
27
+ marshaler.marshal(nil)
28
+ end
29
+ assert_raises(NotImplementedError) do
30
+ marshaler.unmarshal(nil)
31
+ end
32
+ assert_equal(nil, marshaler.register_type(nil))
33
+ end
34
+
35
+ def test_marshaling
36
+ info = WS::ParamInfo.create(Nested::MyClass, @marshaler.register_type(Nested::MyClass))
37
+ param = WS::Param.new(Nested::MyClass.new(2, "name"), info)
38
+ new_param = @marshaler.unmarshal(@marshaler.marshal(param))
39
+ assert(param == new_param)
40
+ end
41
+
42
+ def test_exception_marshaling
43
+ info = WS::ParamInfo.create(RuntimeError, @marshaler.register_type(RuntimeError))
44
+ param = WS::Param.new(RuntimeError.new("hello, world"), info)
45
+ new_param = @marshaler.unmarshal(@marshaler.marshal(param))
46
+ assert_equal("hello, world", new_param.value.detail.cause.message)
47
+ end
48
+
49
+ def test_registration
50
+ type_binding1 = @marshaler.register_type(:int)
51
+ type_binding2 = @marshaler.register_type(:int)
52
+ assert(type_binding1.equal?(type_binding2))
53
+ end
54
+
55
+ def test_active_record
56
+ if Object.const_defined?('ActiveRecord')
57
+ node_class = Class.new(ActiveRecord::Base) do
58
+ def initialize(*args)
59
+ super(*args)
60
+ @new_record = false
61
+ end
62
+
63
+ class << self
64
+ def name
65
+ "Node"
66
+ end
67
+
68
+ def columns(*args)
69
+ [
70
+ ActiveRecord::ConnectionAdapters::Column.new('id', 0, 'int'),
71
+ ActiveRecord::ConnectionAdapters::Column.new('name', nil, 'string'),
72
+ ActiveRecord::ConnectionAdapters::Column.new('email', nil, 'string'),
73
+ ]
74
+ end
75
+
76
+ def connection
77
+ self
78
+ end
79
+ end
80
+ end
81
+ info = WS::ParamInfo.create(node_class, @marshaler.register_type(node_class), 0)
82
+ ar_obj = node_class.new('name' => 'hello', 'email' => 'test@test.com')
83
+ param = WS::Param.new(ar_obj, info)
84
+ obj = @marshaler.marshal(param)
85
+ param = @marshaler.unmarshal(obj)
86
+ new_ar_obj = param.value
87
+ assert_equal(ar_obj, new_ar_obj)
88
+ assert(!ar_obj.equal?(new_ar_obj))
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,47 @@
1
+ require File.dirname(__FILE__) + '/abstract_encoding'
2
+ require 'time'
3
+
4
+ class SoapRpcEncodingTest < Test::Unit::TestCase
5
+ include EncodingTest
6
+
7
+ def test_setup
8
+ @encoder = WS::Encoding::SoapRpcEncoding.new
9
+ @marshaler = WS::Marshaling::SoapMarshaler.new
10
+ end
11
+
12
+ def test_call_encoding_and_decoding
13
+ obj = encode_rpc_call('DecodeMe', @call_signature, @call_params)
14
+ method_name, decoded_params = decode_rpc_call(obj)
15
+ params = decoded_params.map{|x| @marshaler.unmarshal(x).value}
16
+ assert_equal(method_name, 'DecodeMe')
17
+ assert_equal(@call_params[0..3], params[0..3])
18
+ # XXX: DateTime not marshaled correctly yet
19
+ assert_equal(@call_params[5..-1], params[5..-1])
20
+ end
21
+
22
+ def test_response_encoding_and_decoding_simple
23
+ obj = encode_rpc_response('DecodeMe', @response_signature, @response_param)
24
+ method_name, return_value = decode_rpc_response(obj)
25
+ return_value = @marshaler.unmarshal(return_value).value
26
+ assert_equal('DecodeMe', method_name)
27
+ assert_equal(@response_param, return_value)
28
+ end
29
+
30
+ def test_response_encoding_and_decoding_struct
31
+ struct = Nested::StructClass.new
32
+ obj = encode_rpc_response('DecodeMe', [Nested::StructClass], struct)
33
+ method_name, return_value = decode_rpc_response(obj)
34
+ return_value = @marshaler.unmarshal(return_value).value
35
+ assert_equal('DecodeMe', method_name)
36
+ assert_equal(struct, return_value)
37
+ end
38
+
39
+ def test_response_encoding_and_decoding_array
40
+ struct = Nested::StructClass.new
41
+ obj = encode_rpc_response('DecodeMe', [[Nested::StructClass]], [struct])
42
+ method_name, return_value = decode_rpc_response(obj)
43
+ return_value = @marshaler.unmarshal(return_value).value
44
+ assert_equal('DecodeMe', method_name)
45
+ assert_equal([struct], return_value)
46
+ end
47
+ end
@@ -0,0 +1,41 @@
1
+ require File.dirname(__FILE__) + '/abstract_unit'
2
+
3
+ class TypesTest < Test::Unit::TestCase
4
+ include WS
5
+
6
+ def setup
7
+ @caster = BaseTypeCaster.new
8
+ end
9
+
10
+ def test_base_types
11
+ assert_equal(:int, BaseTypes.canonical_type_name(:integer))
12
+ assert_equal(:int, BaseTypes.canonical_type_name(:fixnum))
13
+ assert_equal(Integer, BaseTypes.type_name_to_class(:bignum))
14
+ assert_equal(Date, BaseTypes.type_name_to_class(:date))
15
+ assert_equal(Time, BaseTypes.type_name_to_class(:timestamp))
16
+ assert_equal(TrueClass, BaseTypes.type_name_to_class(:bool))
17
+ assert_equal(:int, BaseTypes.class_to_type_name(Bignum))
18
+ assert_equal(:bool, BaseTypes.class_to_type_name(FalseClass))
19
+ assert_equal(Integer, BaseTypes.canonical_type_class(Fixnum))
20
+ assert_raises(TypeError) do
21
+ BaseTypes.canonical_type_name(:fake)
22
+ end
23
+ end
24
+
25
+ def test_casting
26
+ assert_equal(5, @caster.cast("5", Fixnum))
27
+ assert_equal('50.0', @caster.cast(50.0, String))
28
+ assert_equal(true, @caster.cast('true', FalseClass))
29
+ assert_equal(false, @caster.cast('false', TrueClass))
30
+ assert_raises(TypeError) do
31
+ @caster.cast('yes', FalseClass)
32
+ end
33
+ assert_equal(3.14159, @caster.cast('3.14159', Float))
34
+ now1 = Time.new
35
+ now2 = @caster.cast("#{now1}", Time)
36
+ assert_equal(now1.tv_sec, now2.tv_sec)
37
+ date1 = Date.parse('2004-01-01')
38
+ date2 = @caster.cast("#{date1}", Date)
39
+ assert_equal(date1, date2)
40
+ end
41
+ end
@@ -0,0 +1,34 @@
1
+ require File.dirname(__FILE__) + '/abstract_encoding'
2
+ require 'time'
3
+
4
+ class XmlRpcEncodingTest < Test::Unit::TestCase
5
+ include EncodingTest
6
+
7
+ def test_setup
8
+ @encoder = WS::Encoding::XmlRpcEncoding.new
9
+ @marshaler = WS::Marshaling::XmlRpcMarshaler.new
10
+ end
11
+
12
+ def test_typed_call_encoding_and_decoding
13
+ obj = encode_rpc_call('DecodeMe', @call_signature, @call_params)
14
+ method_name, params = decode_rpc_call(obj)
15
+ (0..(@call_signature.length-1)).each do |i|
16
+ params[i] = @marshaler.typed_unmarshal(params[i], @call_signature[i]).value
17
+ end
18
+ assert_equal(method_name, 'DecodeMe')
19
+ assert_equal(@call_params[0..3], params[0..3])
20
+ assert_equal(@call_params[5..-1], params[5..-1])
21
+ end
22
+
23
+ def test_untyped_call_encoding_and_decoding
24
+ obj = encode_rpc_call('DecodeMe', @call_signature, @call_params)
25
+ method_name, params = decode_rpc_call(obj)
26
+ (0..(@call_signature.length-1)).each do |i|
27
+ params[i] = @marshaler.unmarshal(params[i]).value
28
+ end
29
+ assert_equal(method_name, 'DecodeMe')
30
+ assert_equal(@call_params[0..3], params[0..3])
31
+ assert_equal(@call_params[5].name, params[5]['name'])
32
+ assert_equal(@call_params[5].version, params[5]['version'])
33
+ end
34
+ end
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.8.4
2
+ rubygems_version: 0.8.6
3
3
  specification_version: 1
4
4
  name: actionwebservice
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.5.0
7
- date: 2005-02-24
6
+ version: 0.6.0
7
+ date: 2005-03-07
8
8
  summary: Web service support for Action Pack.
9
9
  require_paths:
10
10
  - lib
@@ -31,7 +31,7 @@ files:
31
31
  - setup.rb
32
32
  - README
33
33
  - TODO
34
- - ChangeLog
34
+ - CHANGELOG
35
35
  - MIT-LICENSE
36
36
  - examples/googlesearch
37
37
  - examples/metaWeblog
@@ -54,6 +54,7 @@ files:
54
54
  - lib/action_web_service/base.rb
55
55
  - lib/action_web_service/client
56
56
  - lib/action_web_service/client.rb
57
+ - lib/action_web_service/container
57
58
  - lib/action_web_service/container.rb
58
59
  - lib/action_web_service/dispatcher
59
60
  - lib/action_web_service/dispatcher.rb
@@ -62,35 +63,63 @@ files:
62
63
  - lib/action_web_service/protocol.rb
63
64
  - lib/action_web_service/struct.rb
64
65
  - lib/action_web_service/support
65
- - lib/action_web_service/api/abstract.rb
66
- - lib/action_web_service/api/action_controller.rb
66
+ - lib/action_web_service/test_invoke.rb
67
+ - lib/action_web_service/vendor
68
+ - lib/action_web_service/api/base.rb
67
69
  - lib/action_web_service/client/base.rb
68
70
  - lib/action_web_service/client/soap_client.rb
69
71
  - lib/action_web_service/client/xmlrpc_client.rb
72
+ - lib/action_web_service/container/action_controller_container.rb
73
+ - lib/action_web_service/container/delegated_container.rb
74
+ - lib/action_web_service/container/direct_container.rb
70
75
  - lib/action_web_service/dispatcher/abstract.rb
71
76
  - lib/action_web_service/dispatcher/action_controller_dispatcher.rb
72
77
  - lib/action_web_service/protocol/abstract.rb
73
- - lib/action_web_service/protocol/registry.rb
78
+ - lib/action_web_service/protocol/discovery.rb
74
79
  - lib/action_web_service/protocol/soap_protocol.rb
75
80
  - lib/action_web_service/protocol/xmlrpc_protocol.rb
76
81
  - lib/action_web_service/support/class_inheritable_options.rb
77
- - lib/action_web_service/support/signature.rb
82
+ - lib/action_web_service/vendor/ws
83
+ - lib/action_web_service/vendor/ws.rb
84
+ - lib/action_web_service/vendor/ws/common.rb
85
+ - lib/action_web_service/vendor/ws/encoding
86
+ - lib/action_web_service/vendor/ws/encoding.rb
87
+ - lib/action_web_service/vendor/ws/marshaling
88
+ - lib/action_web_service/vendor/ws/marshaling.rb
89
+ - lib/action_web_service/vendor/ws/types.rb
90
+ - lib/action_web_service/vendor/ws/encoding/abstract.rb
91
+ - lib/action_web_service/vendor/ws/encoding/soap_rpc_encoding.rb
92
+ - lib/action_web_service/vendor/ws/encoding/xmlrpc_encoding.rb
93
+ - lib/action_web_service/vendor/ws/marshaling/abstract.rb
94
+ - lib/action_web_service/vendor/ws/marshaling/soap_marshaling.rb
95
+ - lib/action_web_service/vendor/ws/marshaling/xmlrpc_marshaling.rb
78
96
  - test/abstract_client.rb
79
- - test/abstract_soap.rb
97
+ - test/abstract_dispatcher.rb
80
98
  - test/abstract_unit.rb
81
99
  - test/api_test.rb
100
+ - test/apis
82
101
  - test/base_test.rb
83
102
  - test/client_soap_test.rb
84
103
  - test/client_xmlrpc_test.rb
85
104
  - test/container_test.rb
86
- - test/dispatcher_action_controller_test.rb
105
+ - test/dispatcher_action_controller_soap_test.rb
106
+ - test/dispatcher_action_controller_xmlrpc_test.rb
87
107
  - test/gencov
88
108
  - test/invocation_test.rb
89
- - test/protocol_registry_test.rb
90
- - test/protocol_soap_test.rb
91
- - test/protocol_xmlrpc_test.rb
92
109
  - test/run
93
110
  - test/struct_test.rb
111
+ - test/test_invoke_test.rb
112
+ - test/ws
113
+ - test/apis/auto_load_api.rb
114
+ - test/apis/broken_auto_load_api.rb
115
+ - test/ws/abstract_encoding.rb
116
+ - test/ws/abstract_unit.rb
117
+ - test/ws/gencov
118
+ - test/ws/run
119
+ - test/ws/soap_marshaling_test.rb
120
+ - test/ws/soap_rpc_encoding_test.rb
121
+ - test/ws/types_test.rb
122
+ - test/ws/xmlrpc_encoding_test.rb
94
123
  test_files: []
95
124
  rdoc_options: []
96
125
  extra_rdoc_files: []
@@ -105,9 +134,9 @@ dependencies:
105
134
  version_requirements: !ruby/object:Gem::Version::Requirement
106
135
  requirements:
107
136
  -
108
- - "="
137
+ - ">="
109
138
  - !ruby/object:Gem::Version
110
- version: 1.5.0
139
+ version: 1.5.1
111
140
  version:
112
141
  - !ruby/object:Gem::Dependency
113
142
  name: activerecord
@@ -115,9 +144,9 @@ dependencies:
115
144
  version_requirements: !ruby/object:Gem::Version::Requirement
116
145
  requirements:
117
146
  -
118
- - "="
147
+ - ">="
119
148
  - !ruby/object:Gem::Version
120
- version: 1.7.0
149
+ version: 1.8.0
121
150
  version:
122
151
  - !ruby/object:Gem::Dependency
123
152
  name: activesupport
@@ -125,7 +154,7 @@ dependencies:
125
154
  version_requirements: !ruby/object:Gem::Version::Requirement
126
155
  requirements:
127
156
  -
128
- - "="
157
+ - ">="
129
158
  - !ruby/object:Gem::Version
130
- version: 1.0.0
159
+ version: 1.0.1
131
160
  version: