wrest 0.0.6-java → 0.0.7-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. data/README.rdoc +51 -19
  2. data/Rakefile +2 -3
  3. data/VERSION.yml +1 -1
  4. data/lib/wrest.rb +11 -2
  5. data/lib/wrest/components.rb +1 -2
  6. data/lib/wrest/components/attributes_container.rb +31 -69
  7. data/lib/wrest/components/attributes_container/typecaster.rb +121 -0
  8. data/lib/wrest/components/mutators.rb +18 -1
  9. data/lib/wrest/components/mutators/base.rb +52 -39
  10. data/lib/wrest/components/mutators/camel_to_snake_case.rb +7 -5
  11. data/lib/wrest/components/mutators/xml_mini_type_caster.rb +43 -0
  12. data/lib/wrest/components/mutators/xml_simple_type_caster.rb +22 -20
  13. data/lib/wrest/components/translators.rb +20 -17
  14. data/lib/wrest/components/translators/content_types.rb +2 -2
  15. data/lib/wrest/components/translators/json.rb +11 -8
  16. data/lib/wrest/components/translators/xml.rb +9 -12
  17. data/lib/wrest/core_ext/hash/conversions.rb +1 -1
  18. data/lib/wrest/resource/base.rb +25 -13
  19. data/lib/wrest/resource/state.rb +6 -0
  20. data/lib/wrest/response.rb +4 -0
  21. data/lib/wrest/uri.rb +5 -1
  22. data/lib/wrest/version.rb +1 -1
  23. data/spec/spec.opts +1 -1
  24. data/spec/spec_helper.rb +8 -1
  25. data/spec/wrest/components/attributes_container/typecaster_spec.rb +63 -0
  26. data/spec/wrest/components/attributes_container_spec.rb +6 -61
  27. data/spec/wrest/components/mutators/base_spec.rb +5 -1
  28. data/spec/wrest/components/mutators/xml_mini_type_caster_spec.rb +75 -0
  29. data/spec/wrest/components/mutators_spec.rb +21 -0
  30. data/spec/wrest/components/translators/xml_spec.rb +1 -1
  31. data/spec/wrest/components/translators_spec.rb +9 -0
  32. data/spec/wrest/uri_spec.rb +16 -4
  33. metadata +14 -15
  34. data/lib/wrest/components/typecast_helpers.rb +0 -41
@@ -0,0 +1,6 @@
1
+ module Wrest
2
+ module Resource
3
+ class State
4
+ end
5
+ end
6
+ end
@@ -34,5 +34,9 @@ module Wrest #:nodoc:
34
34
  def deserialise_using(translator)
35
35
  translator.deserialise(@http_response)
36
36
  end
37
+
38
+ def headers
39
+ @http_response.to_hash
40
+ end
37
41
  end
38
42
  end
data/lib/wrest/uri.rb CHANGED
@@ -47,11 +47,15 @@ module Wrest #:nodoc:
47
47
  def delete(parameters = {}, headers = {})
48
48
  do_request 'delete', parameters.empty? ? @uri.request_uri : "#{@uri.request_uri}?#{parameters.to_query}", headers.stringify_keys
49
49
  end
50
+
51
+ def options
52
+ do_request 'options', @uri.request_uri
53
+ end
50
54
 
51
55
  def do_request(method, url, *args)
52
56
  response = nil
53
57
 
54
- Wrest.logger.info "#{method} -> #{url}"
58
+ Wrest.logger.info "--> (#{method}) #{@uri.scheme}://#{@uri.host}:#{@uri.port}#{url}"
55
59
  time = Benchmark.realtime { response = Wrest::Response.new(http.send(method, url, *args)) }
56
60
  Wrest.logger.info "--> %d %s (%d %.2fs)" % [response.code, response.message, response.body ? response.body.length : 0, time]
57
61
 
data/lib/wrest/version.rb CHANGED
@@ -12,7 +12,7 @@ module Wrest
12
12
  unless defined? MAJOR
13
13
  MAJOR = 0
14
14
  MINOR = 0
15
- TINY = 6
15
+ TINY = 7
16
16
 
17
17
  STRING = [MAJOR, MINOR, TINY].join('.')
18
18
 
data/spec/spec.opts CHANGED
@@ -1,6 +1,6 @@
1
1
  --colour
2
2
  --format
3
- progress
3
+ specdoc
4
4
  --loadby
5
5
  mtime
6
6
  --reverse
data/spec/spec_helper.rb CHANGED
@@ -11,7 +11,14 @@ Wrest.logger = Logger.new(File.open("#{WREST_ROOT}/../log/test.log", 'a'))
11
11
 
12
12
  def p(*args)
13
13
  # super *(args << caller[0])
14
- super *(args << '<br>')
14
+ super *(args << '<br/>')
15
+ # super *args
16
+ end
17
+
18
+ def puts(*args)
19
+ # super *(args << caller[0])
20
+ super *(args << '<br/>')
21
+ # super *args
15
22
  end
16
23
 
17
24
  Spec::Runner.configure do |config|
@@ -0,0 +1,63 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+
3
+ module Wrest::Components
4
+ describe AttributesContainer::Typecaster do
5
+ before :each do
6
+ @Demon = Class.new
7
+ @Demon.class_eval do
8
+ include AttributesContainer
9
+ include AttributesContainer::Typecaster
10
+ end
11
+ end
12
+
13
+ it "should know how to apply a lambda to the string value of a given key casting it to a new type" do
14
+ @Demon.class_eval{ typecast :age => lambda{|id_string| id_string.to_i} }
15
+ kai_wren = @Demon.new('age' => '1')
16
+ kai_wren.age.should == 1
17
+ end
18
+
19
+ it "should not apply a lambda to the value of a given key if it is not a string" do
20
+ @Demon.class_eval{ typecast :age => lambda{|id_string| id_string.to_i} }
21
+ kai_wren = @Demon.new('age' => :ooga)
22
+ kai_wren.age.should == :ooga
23
+ end
24
+
25
+ it "should leave nils unchanged" do
26
+ @Demon.class_eval{ typecast :age => lambda{|id_string| id_string.to_i} }
27
+ kai_wren = @Demon.new('age' => nil)
28
+ kai_wren.age.should be_nil
29
+ end
30
+
31
+ it "should provide helpers for typcasting common types" do
32
+ @Demon.class_eval{ typecast :age => as_integer }
33
+ kai_wren = @Demon.new('age' => '1500')
34
+ kai_wren.age.should == 1500
35
+ end
36
+
37
+ describe 'in subclasses' do
38
+ before :each do
39
+ @Sidhe = Class.new
40
+ @Sidhe.class_eval do
41
+ include AttributesContainer
42
+ include AttributesContainer::Typecaster
43
+
44
+ typecast :age => as_integer
45
+ end
46
+ end
47
+
48
+ it "should inherit all defined typecasts" do
49
+ @ChineseSidhe = Class.new(@Sidhe)
50
+ kai_wren = @ChineseSidhe.new('age' => '1500')
51
+ kai_wren.age.should == 1500
52
+ end
53
+
54
+ it "should discard all typecasts from parent if defined in child" do
55
+ @ChineseSidhe = Class.new(@Sidhe)
56
+ @ChineseSidhe.class_eval{ typecast :born_in => as_integer }
57
+ kai_wren = @ChineseSidhe.new('age' => '1500', 'born_in' => '509')
58
+ kai_wren.age.should == '1500'
59
+ kai_wren.born_in.should == 509
60
+ end
61
+ end
62
+ end
63
+ end
@@ -13,69 +13,14 @@ module Wrest::Components
13
13
  describe AttributesContainer do
14
14
  class HumanBeing
15
15
  include AttributesContainer
16
- has_attributes :id
16
+ always_has :id
17
17
  end
18
18
 
19
19
  it "should allow instantiation with no attributes" do
20
20
  lambda{ HumanBeing.new }.should_not raise_error
21
21
  end
22
22
 
23
- describe 'typecast' do
24
- before :each do
25
- @Demon = Class.new
26
- @Demon.class_eval{include AttributesContainer}
27
- end
28
-
29
- it "should know how to apply a lambda to the string value of a given key casting it to a new type" do
30
- @Demon.class_eval{ typecast :age => lambda{|id_string| id_string.to_i} }
31
- kai_wren = @Demon.new('age' => '1')
32
- kai_wren.age.should == 1
33
- end
34
-
35
- it "should not apply a lambda to the value of a given key if it is not a string" do
36
- @Demon.class_eval{ typecast :age => lambda{|id_string| id_string.to_i} }
37
- kai_wren = @Demon.new('age' => :ooga)
38
- kai_wren.age.should == :ooga
39
- end
40
-
41
- it "should leave nils unchanged" do
42
- @Demon.class_eval{ typecast :age => lambda{|id_string| id_string.to_i} }
43
- kai_wren = @Demon.new('age' => nil)
44
- kai_wren.age.should be_nil
45
- end
46
-
47
- it "should provide helpers for typcasting common types" do
48
- @Demon.class_eval{ typecast :age => as_integer }
49
- kai_wren = @Demon.new('age' => '1500')
50
- kai_wren.age.should == 1500
51
- end
52
-
53
- describe 'in subclasses' do
54
- before :each do
55
- @Sidhe = Class.new
56
- @Sidhe.class_eval{
57
- include AttributesContainer
58
- typecast :age => as_integer
59
- }
60
- end
61
-
62
- it "should inherit all defined typecasts" do
63
- @ChineseSidhe = Class.new(@Sidhe)
64
- kai_wren = @ChineseSidhe.new('age' => '1500')
65
- kai_wren.age.should == 1500
66
- end
67
-
68
- it "should discard all typecasts from parent if defined in child" do
69
- @ChineseSidhe = Class.new(@Sidhe)
70
- @ChineseSidhe.class_eval{ typecast :born_in => as_integer }
71
- kai_wren = @ChineseSidhe.new('age' => '1500', 'born_in' => '509')
72
- kai_wren.age.should == '1500'
73
- kai_wren.born_in.should == 509
74
- end
75
- end
76
- end
77
-
78
- describe 'has_attributes' do
23
+ describe 'always_has' do
79
24
  describe 'method creation' do
80
25
  before :each do
81
26
  @Demon = Class.new
@@ -87,7 +32,7 @@ module Wrest::Components
87
32
 
88
33
  @Demon.class_eval{
89
34
  include AttributesContainer
90
- has_attributes :trainer
35
+ always_has :trainer
91
36
  }
92
37
 
93
38
  kai_wren.methods.should include('trainer')
@@ -99,7 +44,7 @@ module Wrest::Components
99
44
 
100
45
  @Demon.class_eval{
101
46
  include AttributesContainer
102
- has_attributes :trainer
47
+ always_has :trainer
103
48
  }
104
49
 
105
50
  kai_wren.methods.should include('trainer=')
@@ -111,7 +56,7 @@ module Wrest::Components
111
56
 
112
57
  @Demon.class_eval{
113
58
  include AttributesContainer
114
- has_attributes :trainer
59
+ always_has :trainer
115
60
  }
116
61
  kai_wren.methods.should include('trainer?')
117
62
  end
@@ -122,7 +67,7 @@ module Wrest::Components
122
67
  @Demon = Class.new
123
68
  @Demon.class_eval{
124
69
  include AttributesContainer
125
- has_attributes :trainer
70
+ always_has :trainer
126
71
 
127
72
  def method_missing(method_name, *args)
128
73
  # Ensuring that the instance level
@@ -33,6 +33,10 @@ module Wrest::Components
33
33
  }]]
34
34
  ).should == ["result", {"publish_date" => "1240326000", "news_source" => {"online"=>"PC via News", "unique_id"=>1}}]
35
35
  end
36
-
36
+
37
+ it "should register all subclasses in the registry" do
38
+ class SomeMutator < Mutators::Base; end
39
+ Mutators::REGISTRY[:some_mutator].should == SomeMutator
40
+ end
37
41
  end
38
42
  end
@@ -0,0 +1,75 @@
1
+ # Copyright 2009 Sidu Ponnappa
2
+
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ # Unless required by applicable law or agreed to in writing, software distributed under the License
7
+ # is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
8
+ # See the License for the specific language governing permissions and limitations under the License.
9
+
10
+ require File.dirname(__FILE__) + '/../../../spec_helper'
11
+
12
+ module Wrest::Components
13
+ describe Mutators::XmlMiniTypeCaster do
14
+ before(:each) do
15
+ @mutator = Mutators::XmlMiniTypeCaster.new
16
+ end
17
+
18
+ # {"lead-bottle"=>{"name"=>{"__content__"=>"Wooz"}, "universe-id"=>{"type"=>"integer", "nil"=>"true"}, "id"=>{"__content__"=>"1", "type"=>"integer"}}}
19
+
20
+ it "should typecast a nil value in a tuple" do
21
+ @mutator.mutate(
22
+ ["universe-id", {"type"=>"integer", "nil"=>"true"}]
23
+ ).should == ["universe-id", nil]
24
+ end
25
+
26
+ it "should leave a string value in a tuple unchanged" do
27
+ @mutator.mutate(
28
+ ["name", {"__content__" => "Wooz"}]
29
+ ).should == ["name", "Wooz"]
30
+ end
31
+
32
+ it "should cast an integer value in a tuple" do
33
+ @mutator.mutate(
34
+ ["id", {"type"=>"integer", "__content__"=>"1"}]
35
+ ).should == ["id", 1]
36
+ end
37
+
38
+ it "should step into a value if it is a hash" do
39
+ @mutator.mutate(
40
+ ["ResultSet", {
41
+ "firstResultPosition"=>"1", "totalResultsReturned"=>"1",
42
+ "xsi:schemaLocation"=>"urn:ooga:on http://api.search.ooga.com/NewsSearchService/V1/NewsSearchResponse.xsd",
43
+ "totalResultsAvailable"=>"23287",
44
+ "Result"=>{
45
+ "UniqueId"=>{"__content__"=>"1", "type" => "integer"},
46
+ "PublishDate"=>{"__content__"=>"20090424", "type" => "date"},
47
+ "Language"=>{"__content__"=>"en"},
48
+ "Title"=>{"__content__"=>"Wootler: Wook focus should be Klingon, not India"},
49
+ "ClickUrls"=>[
50
+ {"One" => {"__content__"=>"http://news.ooga.com/s/ap/20090424/ap_on_go_ca_st_pe/us_us_wookieland_5"}},
51
+ {"Two" => {"__content__"=>"http://news.ooga.com/s/ap/20090424/ap_on_go_ca_st_pe/us_us_wookieland_6"}},
52
+ ]
53
+
54
+ }
55
+ }
56
+ ]
57
+ ).should == ["ResultSet", {
58
+ "firstResultPosition"=>"1", "totalResultsReturned"=>"1",
59
+ "xsi:schemaLocation"=>"urn:ooga:on http://api.search.ooga.com/NewsSearchService/V1/NewsSearchResponse.xsd",
60
+ "totalResultsAvailable"=>"23287",
61
+ "Result"=>{
62
+ "UniqueId"=> 1,
63
+ "PublishDate"=>Date.parse("20090424"),
64
+ "Language"=>"en",
65
+ "Title"=>"Wootler: Wook focus should be Klingon, not India",
66
+ "ClickUrls"=>[
67
+ {"One" => "http://news.ooga.com/s/ap/20090424/ap_on_go_ca_st_pe/us_us_wookieland_5"},
68
+ {"Two" => "http://news.ooga.com/s/ap/20090424/ap_on_go_ca_st_pe/us_us_wookieland_6"},
69
+ ]
70
+ }
71
+ }
72
+ ]
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,21 @@
1
+ # Copyright 2009 Sidu Ponnappa
2
+
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ # Unless required by applicable law or agreed to in writing, software distributed under the License
7
+ # is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
8
+ # See the License for the specific language governing permissions and limitations under the License.
9
+
10
+ require File.dirname(__FILE__) + '/../../spec_helper'
11
+
12
+ module Wrest::Components
13
+ describe Mutators do
14
+ it "should know how to chain mutators without having to namespace them all" do
15
+ mutator = Mutators.chain(:xml_mini_type_caster, :xml_simple_type_caster, :camel_to_snake_case)
16
+ mutator.class.should == Mutators::XmlMiniTypeCaster
17
+ mutator.next_mutator.class.should == Mutators::XmlSimpleTypeCaster
18
+ mutator.next_mutator.next_mutator.class.should == Mutators::CamelToSnakeCase
19
+ end
20
+ end
21
+ end
@@ -6,7 +6,7 @@ module Wrest::Components::Translators
6
6
  http_response = mock('Http Reponse')
7
7
  http_response.should_receive(:body).and_return("<ooga><age>12</age></ooga>")
8
8
 
9
- Xml.deserialise(http_response).should == {"ooga"=>[{"age"=>["12"]}]}
9
+ Xml.deserialise(http_response).should == {"ooga"=>{"age"=>{"__content__" => "12"}}}
10
10
  end
11
11
  end
12
12
  end
@@ -1,3 +1,12 @@
1
+ # Copyright 2009 Sidu Ponnappa
2
+
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ # Unless required by applicable law or agreed to in writing, software distributed under the License
7
+ # is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
8
+ # See the License for the specific language governing permissions and limitations under the License.
9
+
1
10
  require File.dirname(__FILE__) + '/../../spec_helper'
2
11
 
3
12
  module Wrest::Components
@@ -33,13 +33,13 @@ module Wrest
33
33
  Uri.new('https://localhost:3000').should_not == Uri.new('http://localhost:3000')
34
34
  Uri.new('http://localhost:3000').should == Uri.new('http://localhost:3000')
35
35
  end
36
-
37
-
36
+
37
+
38
38
  it "should have the same hash code if it is the same uri" do
39
39
  Uri.new('https://localhost:3000').hash.should == Uri.new('https://localhost:3000').hash
40
40
  Uri.new('https://localhost:3001').hash.should_not == Uri.new('https://localhost:3000').hash
41
41
  end
42
-
42
+
43
43
  describe 'Get' do
44
44
  it "should know how to get" do
45
45
  uri = "http://localhost:3000/glassware".to_uri
@@ -77,7 +77,7 @@ module Wrest
77
77
  uri.get(:owner => 'Kai', :type => 'bottle')
78
78
  end
79
79
  end
80
-
80
+
81
81
  it "should know how to post" do
82
82
  uri = "http://localhost:3000/glassware".to_uri
83
83
  uri.should_not be_https
@@ -114,6 +114,18 @@ module Wrest
114
114
  uri.delete({:owner => 'Kai', :type => 'bottle'}, :page => '2', :per_page => '5')
115
115
  end
116
116
 
117
+ it "should know how to ask for options on a URI" do
118
+ uri = "http://localhost:3000/glassware".to_uri
119
+ uri.should_not be_https
120
+
121
+ http = mock(Net::HTTP)
122
+ Net::HTTP.should_receive(:new).with('localhost', 3000).and_return(http)
123
+
124
+ http.should_receive(:options).with('/glassware').and_return(build_ok_response(nil))
125
+
126
+ uri.options
127
+ end
128
+
117
129
  it "should not mutate state of the uri across requests" do
118
130
  uri = "http://localhost:3000/glassware".to_uri
119
131
  uri.should_not be_https
metadata CHANGED
@@ -4,10 +4,11 @@ extensions: []
4
4
  homepage: http://github.com/kaiwren/wrest
5
5
  executables:
6
6
  - wrest
7
+ - jwrest
7
8
  version: !ruby/object:Gem::Version
8
- version: 0.0.6
9
+ version: 0.0.7
9
10
  post_install_message:
10
- date: 2009-04-23 18:30:00 +00:00
11
+ date: 2009-05-06 18:30:00 +00:00
11
12
  files:
12
13
  - README.rdoc
13
14
  - Rakefile
@@ -18,15 +19,16 @@ files:
18
19
  - lib/wrest.rb
19
20
  - lib/wrest/components.rb
20
21
  - lib/wrest/components/attributes_container.rb
22
+ - lib/wrest/components/attributes_container/typecaster.rb
21
23
  - lib/wrest/components/mutators.rb
22
24
  - lib/wrest/components/mutators/base.rb
23
25
  - lib/wrest/components/mutators/camel_to_snake_case.rb
26
+ - lib/wrest/components/mutators/xml_mini_type_caster.rb
24
27
  - lib/wrest/components/mutators/xml_simple_type_caster.rb
25
28
  - lib/wrest/components/translators.rb
26
29
  - lib/wrest/components/translators/content_types.rb
27
30
  - lib/wrest/components/translators/json.rb
28
31
  - lib/wrest/components/translators/xml.rb
29
- - lib/wrest/components/typecast_helpers.rb
30
32
  - lib/wrest/core_ext/hash.rb
31
33
  - lib/wrest/core_ext/hash/conversions.rb
32
34
  - lib/wrest/core_ext/string.rb
@@ -37,6 +39,7 @@ files:
37
39
  - lib/wrest/resource.rb
38
40
  - lib/wrest/resource/base.rb
39
41
  - lib/wrest/resource/collection.rb
42
+ - lib/wrest/resource/state.rb
40
43
  - lib/wrest/response.rb
41
44
  - lib/wrest/uri.rb
42
45
  - lib/wrest/uri_template.rb
@@ -45,10 +48,13 @@ files:
45
48
  - spec/rcov.opts
46
49
  - spec/spec.opts
47
50
  - spec/spec_helper.rb
51
+ - spec/wrest/components/attributes_container/typecaster_spec.rb
48
52
  - spec/wrest/components/attributes_container_spec.rb
49
53
  - spec/wrest/components/mutators/base_spec.rb
50
54
  - spec/wrest/components/mutators/camel_to_snake_spec.rb
55
+ - spec/wrest/components/mutators/xml_mini_type_caster_spec.rb
51
56
  - spec/wrest/components/mutators/xml_simple_type_caster_spec.rb
57
+ - spec/wrest/components/mutators_spec.rb
52
58
  - spec/wrest/components/translators/xml_spec.rb
53
59
  - spec/wrest/components/translators_spec.rb
54
60
  - spec/wrest/core_ext/hash/conversions_spec.rb
@@ -67,7 +73,7 @@ name: wrest
67
73
  has_rdoc: true
68
74
  platform: java
69
75
  summary: REST client library for Ruby.
70
- default_executable: wrest
76
+ default_executable:
71
77
  bindir: bin
72
78
  required_rubygems_version: !ruby/object:Gem::Requirement
73
79
  version:
@@ -91,9 +97,12 @@ test_files:
91
97
  - spec/wrest/uri_spec.rb
92
98
  - spec/wrest/uri_template_spec.rb
93
99
  - spec/wrest/components/attributes_container_spec.rb
100
+ - spec/wrest/components/mutators_spec.rb
94
101
  - spec/wrest/components/translators_spec.rb
102
+ - spec/wrest/components/attributes_container/typecaster_spec.rb
95
103
  - spec/wrest/components/mutators/base_spec.rb
96
104
  - spec/wrest/components/mutators/camel_to_snake_spec.rb
105
+ - spec/wrest/components/mutators/xml_mini_type_caster_spec.rb
97
106
  - spec/wrest/components/mutators/xml_simple_type_caster_spec.rb
98
107
  - spec/wrest/components/translators/xml_spec.rb
99
108
  - spec/wrest/core_ext/hash/conversions_spec.rb
@@ -109,17 +118,7 @@ dependencies:
109
118
  requirements:
110
119
  - - '>='
111
120
  - !ruby/object:Gem::Version
112
- version: 2.1.0
113
- - !ruby/object:Gem::Dependency
114
- type: :runtime
115
- name: xml-simple
116
- version_requirement:
117
- version_requirements: !ruby/object:Gem::Requirement
118
- version:
119
- requirements:
120
- - - '>='
121
- - !ruby/object:Gem::Version
122
- version: 1.0.11
121
+ version: 2.3.2
123
122
  - !ruby/object:Gem::Dependency
124
123
  type: :runtime
125
124
  name: json-jruby