munson 0.3.0 → 0.3.1
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.
- checksums.yaml +13 -5
- data/.gitignore +2 -0
- data/LICENSE.txt +21 -0
- data/README.md +6 -8
- data/lib/core_ext/object/deep_dup.rb +55 -0
- data/lib/core_ext/object/duplicable.rb +100 -0
- data/lib/munson/client.rb +1 -1
- data/lib/munson/document.rb +4 -2
- data/lib/munson/resource.rb +7 -1
- data/lib/munson/version.rb +1 -1
- data/munson.gemspec +0 -1
- metadata +31 -43
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
YjIwMDg5ODY5ZjM1N2JkN2UzOTE4ZGFkOWVkNTJmNzBkNDA2M2RmZg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
YjA2YzRlNjYxZjJmOWZiNTJjZjdiMzFiNGE2NmM5NjYzYjIxOWJjYw==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
Yzc3YWJiNjA4OTVhM2M4YmEwYWY2OTJjN2Y5ZmQ5NWI0ZDgzMzUyMjk1M2Zk
|
10
|
+
ZTI5N2U0MTZlNTdhMTIxYWRjNDk3ZDNhOWVmZDdmYWE4YThmYzU1MjQ0MmIw
|
11
|
+
NTJjOTVlYzE2MDJmYjRlYzQ0OTgxYzhiMDQ3NGI2NzMyNmZjZGY=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NzU3MDljYTIyNDVjMGI4NDA4NWZkYTFkNThkOWQ2MTI0MDg3MTUxMDQxYjMz
|
14
|
+
OGI0ZmQ0MWI2ZTk1N2RjZTZkZGQzMTFkZjcyOGM3NzVhMTczYzEzZDU5ZmM3
|
15
|
+
NjBhNmEzNjkwMjE0ZDk3ZmQ1NmQ2ZGYyMWUyODMwNzU5NDYxNzk=
|
data/.gitignore
CHANGED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2016 Cory O'Daniel
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
CHANGED
@@ -306,10 +306,10 @@ Additinally any Faraday Connection options can be passed. [Faraday::Connection o
|
|
306
306
|
### Custom Query Builder
|
307
307
|
|
308
308
|
Since the filter param's format isn't specified in the [spec](http://jsonapi.org/format/#fetching-filtering)
|
309
|
-
this implementation uses
|
309
|
+
this implementation uses [JSONAPI::Resource's implementation](https://github.com/cerebris/jsonapi-resources#filters)
|
310
310
|
|
311
|
-
To override, implement your own custom query builder inheriting from
|
312
|
-
|
311
|
+
To override, implement your own custom query builder inheriting from ```Munson::Query```.
|
312
|
+
```Munson::Client``` takes a Query class to use. This method could be overwritten in your Resource:
|
313
313
|
|
314
314
|
```ruby
|
315
315
|
class MyBuilder < Munson::Query
|
@@ -319,6 +319,7 @@ class MyBuilder < Munson::Query
|
|
319
319
|
end
|
320
320
|
|
321
321
|
Article.munson.query_builder = MyBuilder
|
322
|
+
Article.munson.filter(:name => "Chauncy") #=> MyBuilder instance
|
322
323
|
```
|
323
324
|
|
324
325
|
### Without inheriting from Munson::Resource
|
@@ -400,15 +401,12 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/stacks
|
|
400
401
|
|
401
402
|
## TODOS
|
402
403
|
* [ ] Update Yard docs :D
|
404
|
+
* [ ] Posting/Putting relationships
|
403
405
|
* [ ] A few pending tests :/
|
404
406
|
* [ ] Collection#next (queries for next page, if pagination present)
|
405
407
|
* [ ] Related Documents/Resources taking advantage of underlying resource[links]
|
406
|
-
* [ ] Resource should provide relationship information to the underlying document ?
|
407
408
|
* [ ] Error object to wrap an individual error
|
408
409
|
* [ ] consider enumerable protocol on a query
|
409
410
|
* [ ] Handle null/empty responses...
|
410
|
-
* [ ]
|
411
|
-
* [ ] auto set type based on pluralization (self.type = :foos)
|
412
|
-
* [ ] http://api.rubyonrails.org/classes/ActiveModel/Dirty.html ?
|
413
|
-
* [ ] Pluggable pagination (could it be a subclassed QueryBuilder? vs. a set of methods mixed into a query instance)
|
411
|
+
* [ ] Pluggable pagination?
|
414
412
|
* [ ] Query#find([...]) find multiple records
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'core_ext/object/duplicable'
|
2
|
+
|
3
|
+
# Taken from ActiveSupport
|
4
|
+
|
5
|
+
class Object
|
6
|
+
# Returns a deep copy of object if it's duplicable. If it's
|
7
|
+
# not duplicable, returns +self+.
|
8
|
+
#
|
9
|
+
# object = Object.new
|
10
|
+
# dup = object.deep_dup
|
11
|
+
# dup.instance_variable_set(:@a, 1)
|
12
|
+
#
|
13
|
+
# object.instance_variable_defined?(:@a) # => false
|
14
|
+
# dup.instance_variable_defined?(:@a) # => true
|
15
|
+
def deep_dup
|
16
|
+
duplicable? ? dup : self
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class Array
|
21
|
+
# Returns a deep copy of array.
|
22
|
+
#
|
23
|
+
# array = [1, [2, 3]]
|
24
|
+
# dup = array.deep_dup
|
25
|
+
# dup[1][2] = 4
|
26
|
+
#
|
27
|
+
# array[1][2] # => nil
|
28
|
+
# dup[1][2] # => 4
|
29
|
+
def deep_dup
|
30
|
+
map(&:deep_dup)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class Hash
|
35
|
+
# Returns a deep copy of hash.
|
36
|
+
#
|
37
|
+
# hash = { a: { b: 'b' } }
|
38
|
+
# dup = hash.deep_dup
|
39
|
+
# dup[:a][:c] = 'c'
|
40
|
+
#
|
41
|
+
# hash[:a][:c] # => nil
|
42
|
+
# dup[:a][:c] # => "c"
|
43
|
+
def deep_dup
|
44
|
+
hash = dup
|
45
|
+
each_pair do |key, value|
|
46
|
+
if key.frozen? && ::String === key
|
47
|
+
hash[key] = value.deep_dup
|
48
|
+
else
|
49
|
+
hash.delete(key)
|
50
|
+
hash[key.deep_dup] = value.deep_dup
|
51
|
+
end
|
52
|
+
end
|
53
|
+
hash
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
# Taken from ActiveSupport
|
2
|
+
|
3
|
+
#--
|
4
|
+
# Most objects are cloneable, but not all. For example you can't dup +nil+:
|
5
|
+
#
|
6
|
+
# nil.dup # => TypeError: can't dup NilClass
|
7
|
+
#
|
8
|
+
# Classes may signal their instances are not duplicable removing +dup+/+clone+
|
9
|
+
# or raising exceptions from them. So, to dup an arbitrary object you normally
|
10
|
+
# use an optimistic approach and are ready to catch an exception, say:
|
11
|
+
#
|
12
|
+
# arbitrary_object.dup rescue object
|
13
|
+
#
|
14
|
+
# Rails dups objects in a few critical spots where they are not that arbitrary.
|
15
|
+
# That rescue is very expensive (like 40 times slower than a predicate), and it
|
16
|
+
# is often triggered.
|
17
|
+
#
|
18
|
+
# That's why we hardcode the following cases and check duplicable? instead of
|
19
|
+
# using that rescue idiom.
|
20
|
+
#++
|
21
|
+
class Object
|
22
|
+
# Can you safely dup this object?
|
23
|
+
#
|
24
|
+
# False for +nil+, +false+, +true+, symbol, number, method objects;
|
25
|
+
# true otherwise.
|
26
|
+
def duplicable?
|
27
|
+
true
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
class NilClass
|
32
|
+
# +nil+ is not duplicable:
|
33
|
+
#
|
34
|
+
# nil.duplicable? # => false
|
35
|
+
# nil.dup # => TypeError: can't dup NilClass
|
36
|
+
def duplicable?
|
37
|
+
false
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
class FalseClass
|
42
|
+
# +false+ is not duplicable:
|
43
|
+
#
|
44
|
+
# false.duplicable? # => false
|
45
|
+
# false.dup # => TypeError: can't dup FalseClass
|
46
|
+
def duplicable?
|
47
|
+
false
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
class TrueClass
|
52
|
+
# +true+ is not duplicable:
|
53
|
+
#
|
54
|
+
# true.duplicable? # => false
|
55
|
+
# true.dup # => TypeError: can't dup TrueClass
|
56
|
+
def duplicable?
|
57
|
+
false
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
class Symbol
|
62
|
+
# Symbols are not duplicable:
|
63
|
+
#
|
64
|
+
# :my_symbol.duplicable? # => false
|
65
|
+
# :my_symbol.dup # => TypeError: can't dup Symbol
|
66
|
+
def duplicable?
|
67
|
+
false
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
class Numeric
|
72
|
+
# Numbers are not duplicable:
|
73
|
+
#
|
74
|
+
# 3.duplicable? # => false
|
75
|
+
# 3.dup # => TypeError: can't dup Integer
|
76
|
+
def duplicable?
|
77
|
+
false
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
require "bigdecimal"
|
82
|
+
class BigDecimal
|
83
|
+
# BigDecimals are duplicable:
|
84
|
+
#
|
85
|
+
# BigDecimal.new("1.2").duplicable? # => true
|
86
|
+
# BigDecimal.new("1.2").dup # => #<BigDecimal:...,'0.12E1',18(18)>
|
87
|
+
def duplicable?
|
88
|
+
true
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
class Method
|
93
|
+
# Methods are not duplicable:
|
94
|
+
#
|
95
|
+
# method(:puts).duplicable? # => false
|
96
|
+
# method(:puts).dup # => TypeError: allocator undefined for Method
|
97
|
+
def duplicable?
|
98
|
+
false
|
99
|
+
end
|
100
|
+
end
|
data/lib/munson/client.rb
CHANGED
data/lib/munson/document.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'core_ext/object/deep_dup'
|
2
|
+
|
1
3
|
module Munson
|
2
4
|
class Document
|
3
5
|
attr_accessor :id
|
@@ -9,8 +11,8 @@ module Munson
|
|
9
11
|
@jsonapi_document = jsonapi_document
|
10
12
|
|
11
13
|
if jsonapi_document[:data] && jsonapi_document[:data][:attributes]
|
12
|
-
@original_attributes = jsonapi_document[:data][:attributes]
|
13
|
-
@attributes = jsonapi_document[:data][:attributes].
|
14
|
+
@original_attributes = jsonapi_document[:data][:attributes]
|
15
|
+
@attributes = jsonapi_document[:data][:attributes].deep_dup
|
14
16
|
else
|
15
17
|
@original_attributes = {}
|
16
18
|
@attributes = {}
|
data/lib/munson/resource.rb
CHANGED
@@ -73,7 +73,13 @@ class Munson::Resource
|
|
73
73
|
end
|
74
74
|
|
75
75
|
def ==(other)
|
76
|
-
|
76
|
+
return false if !other
|
77
|
+
|
78
|
+
if other.class.respond_to?(:type)
|
79
|
+
self.class.type == other.class.type && self.id == other.id
|
80
|
+
else
|
81
|
+
false
|
82
|
+
end
|
77
83
|
end
|
78
84
|
|
79
85
|
class << self
|
data/lib/munson/version.rb
CHANGED
data/munson.gemspec
CHANGED
@@ -24,7 +24,6 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_development_dependency "rake", "~> 10.0"
|
25
25
|
spec.add_development_dependency "rspec"
|
26
26
|
spec.add_development_dependency 'rspec-mocks'
|
27
|
-
spec.add_development_dependency "guard-rspec"
|
28
27
|
spec.add_development_dependency "pry"
|
29
28
|
spec.add_development_dependency "pry-byebug"
|
30
29
|
spec.add_development_dependency 'yard'
|
metadata
CHANGED
@@ -1,167 +1,153 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: munson
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cory O'Daniel
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-10-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ! '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ! '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: faraday_middleware
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ! '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ! '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '1.10'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.10'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '10.0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '10.0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ! '>='
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ! '>='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rspec-mocks
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ! '>='
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: guard-rspec
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
94
|
+
- - ! '>='
|
109
95
|
- !ruby/object:Gem::Version
|
110
96
|
version: '0'
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
98
|
name: pry
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - ! '>='
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: '0'
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
107
|
requirements:
|
122
|
-
- -
|
108
|
+
- - ! '>='
|
123
109
|
- !ruby/object:Gem::Version
|
124
110
|
version: '0'
|
125
111
|
- !ruby/object:Gem::Dependency
|
126
112
|
name: pry-byebug
|
127
113
|
requirement: !ruby/object:Gem::Requirement
|
128
114
|
requirements:
|
129
|
-
- -
|
115
|
+
- - ! '>='
|
130
116
|
- !ruby/object:Gem::Version
|
131
117
|
version: '0'
|
132
118
|
type: :development
|
133
119
|
prerelease: false
|
134
120
|
version_requirements: !ruby/object:Gem::Requirement
|
135
121
|
requirements:
|
136
|
-
- -
|
122
|
+
- - ! '>='
|
137
123
|
- !ruby/object:Gem::Version
|
138
124
|
version: '0'
|
139
125
|
- !ruby/object:Gem::Dependency
|
140
126
|
name: yard
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
142
128
|
requirements:
|
143
|
-
- -
|
129
|
+
- - ! '>='
|
144
130
|
- !ruby/object:Gem::Version
|
145
131
|
version: '0'
|
146
132
|
type: :development
|
147
133
|
prerelease: false
|
148
134
|
version_requirements: !ruby/object:Gem::Requirement
|
149
135
|
requirements:
|
150
|
-
- -
|
136
|
+
- - ! '>='
|
151
137
|
- !ruby/object:Gem::Version
|
152
138
|
version: '0'
|
153
139
|
- !ruby/object:Gem::Dependency
|
154
140
|
name: webmock
|
155
141
|
requirement: !ruby/object:Gem::Requirement
|
156
142
|
requirements:
|
157
|
-
- -
|
143
|
+
- - ! '>='
|
158
144
|
- !ruby/object:Gem::Version
|
159
145
|
version: '0'
|
160
146
|
type: :development
|
161
147
|
prerelease: false
|
162
148
|
version_requirements: !ruby/object:Gem::Requirement
|
163
149
|
requirements:
|
164
|
-
- -
|
150
|
+
- - ! '>='
|
165
151
|
- !ruby/object:Gem::Version
|
166
152
|
version: '0'
|
167
153
|
description:
|
@@ -171,15 +157,18 @@ executables: []
|
|
171
157
|
extensions: []
|
172
158
|
extra_rdoc_files: []
|
173
159
|
files:
|
174
|
-
-
|
175
|
-
-
|
176
|
-
-
|
160
|
+
- .gitignore
|
161
|
+
- .rspec
|
162
|
+
- .travis.yml
|
177
163
|
- Gemfile
|
178
164
|
- Guardfile
|
165
|
+
- LICENSE.txt
|
179
166
|
- README.md
|
180
167
|
- Rakefile
|
181
168
|
- bin/console
|
182
169
|
- bin/setup
|
170
|
+
- lib/core_ext/object/deep_dup.rb
|
171
|
+
- lib/core_ext/object/duplicable.rb
|
183
172
|
- lib/munson.rb
|
184
173
|
- lib/munson/agent.rb
|
185
174
|
- lib/munson/attribute.rb
|
@@ -204,19 +193,18 @@ require_paths:
|
|
204
193
|
- lib
|
205
194
|
required_ruby_version: !ruby/object:Gem::Requirement
|
206
195
|
requirements:
|
207
|
-
- -
|
196
|
+
- - ! '>='
|
208
197
|
- !ruby/object:Gem::Version
|
209
198
|
version: '0'
|
210
199
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
211
200
|
requirements:
|
212
|
-
- -
|
201
|
+
- - ! '>='
|
213
202
|
- !ruby/object:Gem::Version
|
214
203
|
version: '0'
|
215
204
|
requirements: []
|
216
205
|
rubyforge_project:
|
217
|
-
rubygems_version: 2.
|
206
|
+
rubygems_version: 2.6.6
|
218
207
|
signing_key:
|
219
208
|
specification_version: 4
|
220
209
|
summary: A JSON API Spec client for Ruby
|
221
210
|
test_files: []
|
222
|
-
has_rdoc:
|