jsonapi-utils 0.7.2 → 0.7.3
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 +5 -5
- data/README.md +5 -5
- data/bin/rspec +17 -0
- data/lib/jsonapi/utils/request.rb +5 -0
- data/lib/jsonapi/utils/response/formatters.rb +106 -15
- data/lib/jsonapi/utils/response/renders.rb +5 -0
- data/lib/jsonapi/utils/support/pagination.rb +25 -4
- data/lib/jsonapi/utils/version.rb +1 -1
- metadata +61 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 56b5970b70c6944e7c5c536f0b92c2bd8d2503d5447886862b72bfabcf85e943
|
4
|
+
data.tar.gz: c07bf056d10c8550c511bdd180dec8393858e45a5de37450ef323367bcc243aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4aa949f97e9e0795dc6686d393767c4a1ad6c9084815a4f1aa10c0f912fc5901192b194204510936cb55a8136ef3467534aaa76132f334dd7f9127920281bc32
|
7
|
+
data.tar.gz: 26e1483f33628891ab311e6e9e3b71e88de5c3e5a9da4d3ae425ae62ea7efd7496acf0a99707de58db4a04d4b3bf33e911d4e11ec8996ba9e9f519e7ffd74c3b
|
data/README.md
CHANGED
@@ -54,7 +54,7 @@ end
|
|
54
54
|
Support:
|
55
55
|
|
56
56
|
* Ruby 1.9+ with Rails 4
|
57
|
-
* Ruby 2.
|
57
|
+
* Ruby 2.4+ with Rails 5
|
58
58
|
|
59
59
|
For Rails 4 add this to your application's Gemfile:
|
60
60
|
|
@@ -62,10 +62,10 @@ For Rails 4 add this to your application's Gemfile:
|
|
62
62
|
gem 'jsonapi-utils', '~> 0.4.9'
|
63
63
|
```
|
64
64
|
|
65
|
-
For Rails 5
|
65
|
+
For Rails 5+:
|
66
66
|
|
67
67
|
```ruby
|
68
|
-
gem 'jsonapi-utils', '~> 0.7.
|
68
|
+
gem 'jsonapi-utils', '~> 0.7.3'
|
69
69
|
```
|
70
70
|
|
71
71
|
And then execute:
|
@@ -225,12 +225,12 @@ class CustomPaginator < JSONAPI::Paginator
|
|
225
225
|
end
|
226
226
|
```
|
227
227
|
|
228
|
-
And then it can be either set at the resource class level (e.g. UserResource.paginator :
|
228
|
+
And then it can be either set at the resource class level (e.g. UserResource.paginator :custom) or via config initializer:
|
229
229
|
|
230
230
|
```ruby
|
231
231
|
# config/initializers/jsonapi_resources.rb
|
232
232
|
JSONAPI.configure do |config|
|
233
|
-
config.default_paginator = :
|
233
|
+
config.default_paginator = :custom
|
234
234
|
end
|
235
235
|
```
|
236
236
|
|
data/bin/rspec
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
#
|
4
|
+
# This file was generated by Bundler.
|
5
|
+
#
|
6
|
+
# The application 'rspec' is installed as part of a gem, and
|
7
|
+
# this file is here to facilitate running it.
|
8
|
+
#
|
9
|
+
|
10
|
+
require "pathname"
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
12
|
+
Pathname.new(__FILE__).realpath)
|
13
|
+
|
14
|
+
require "rubygems"
|
15
|
+
require "bundler/setup"
|
16
|
+
|
17
|
+
load Gem.bin_path("rspec-core", "rspec")
|
@@ -6,6 +6,11 @@ module JSONAPI::Utils
|
|
6
6
|
def jsonapi_request_handling
|
7
7
|
setup_request
|
8
8
|
check_request
|
9
|
+
rescue JSONAPI::Exceptions::InvalidResource,
|
10
|
+
JSONAPI::Exceptions::InvalidField,
|
11
|
+
JSONAPI::Exceptions::InvalidInclude,
|
12
|
+
JSONAPI::Exceptions::InvalidSortCriteria => err
|
13
|
+
jsonapi_render_errors(json: err)
|
9
14
|
end
|
10
15
|
|
11
16
|
# Instantiate the request object.
|
@@ -15,6 +15,11 @@ module JSONAPI
|
|
15
15
|
# @option options [JSONAPI::Resource] resource: it tells the formatter which resource
|
16
16
|
# class to be used rather than use an infered one (default behaviour)
|
17
17
|
#
|
18
|
+
# @option options [JSONAPI::Resource] source: it tells the formatter that this response is from a related resource
|
19
|
+
# and the result should be interpreted as a related resources response
|
20
|
+
#
|
21
|
+
# @option options [String, Symbol] relationship_type: it tells that the formatter which relationship the data is from
|
22
|
+
#
|
18
23
|
# @option options [ActiveRecord::Base] model: ActiveRecord model class to be instantiated
|
19
24
|
# when a Hash or Array of Hashes is passed as the "object" argument
|
20
25
|
#
|
@@ -27,7 +32,7 @@ module JSONAPI
|
|
27
32
|
# @api public
|
28
33
|
def jsonapi_format(object, options = {})
|
29
34
|
if object.is_a?(Hash)
|
30
|
-
hash
|
35
|
+
hash = object.with_indifferent_access
|
31
36
|
object = hash_to_active_record(hash[:data], options[:model])
|
32
37
|
end
|
33
38
|
fix_custom_request_options(object)
|
@@ -51,7 +56,7 @@ module JSONAPI
|
|
51
56
|
# @api public
|
52
57
|
def jsonapi_format_errors(object)
|
53
58
|
if active_record_obj?(object)
|
54
|
-
object = JSONAPI::Utils::Exceptions::ActiveRecord.new(object, @request.resource_klass, context)
|
59
|
+
object = JSONAPI::Utils::Exceptions::ActiveRecord.new(object, @request.resource_klass, context)
|
55
60
|
end
|
56
61
|
errors = object.respond_to?(:errors) ? object.errors : object
|
57
62
|
JSONAPI::Utils::Support::Error.sanitize(errors).uniq
|
@@ -77,12 +82,15 @@ module JSONAPI
|
|
77
82
|
# Build the full response document.
|
78
83
|
#
|
79
84
|
# @param object [ActiveRecord::Base, ActiveRecord::Relation, Hash, Array<Hash>]
|
80
|
-
# Object to be formatted into JSON
|
81
|
-
# e.g.: User.first, User.all, { data: { id: 1, first_name: 'Tiago' } },
|
82
|
-
# [{ data: { id: 1, first_name: 'Tiago' } }]
|
85
|
+
# Object to be formatted into JSON.
|
83
86
|
#
|
84
|
-
# @option options [JSONAPI::Resource] resource
|
85
|
-
#
|
87
|
+
# @option options [JSONAPI::Resource] :resource which resource class to be used
|
88
|
+
# rather than using the default one (inferred)
|
89
|
+
#
|
90
|
+
# @option options [ActiveRecord::Base, JSONAPI::Resource] :source source of related resource,
|
91
|
+
# the result should be interpreted as a related resources response
|
92
|
+
#
|
93
|
+
# @option options [String, Symbol] :relationship which relationship the data is from
|
86
94
|
#
|
87
95
|
# @option options [Integer] count: if it's rendering a collection of resources, the default
|
88
96
|
# gem's counting method can be bypassed by the use of this options. It's shows then the total
|
@@ -95,8 +103,7 @@ module JSONAPI
|
|
95
103
|
results = JSONAPI::OperationResults.new
|
96
104
|
|
97
105
|
if object.respond_to?(:to_ary)
|
98
|
-
|
99
|
-
results.add_result(JSONAPI::ResourcesOperationResult.new(:ok, records, result_options(object, options)))
|
106
|
+
results.add_result(build_collection_result(object, options))
|
100
107
|
else
|
101
108
|
record = turn_into_resource(object, options)
|
102
109
|
results.add_result(JSONAPI::ResourceOperationResult.new(:ok, record))
|
@@ -105,6 +112,68 @@ module JSONAPI
|
|
105
112
|
@_response_document = create_response_document(results)
|
106
113
|
end
|
107
114
|
|
115
|
+
# Build the result operation object for collection actions.
|
116
|
+
#
|
117
|
+
# @param object [ActiveRecord::Relation, Array<Hash>]
|
118
|
+
# Object to be formatted into JSON.
|
119
|
+
#
|
120
|
+
# @option options [JSONAPI::Resource] :resource which resource class to be used
|
121
|
+
# rather than using the default one (inferred)
|
122
|
+
#
|
123
|
+
# @option options [ActiveRecord::Base, JSONAPI::Resource] :source parent model/resource
|
124
|
+
# of the related resource
|
125
|
+
#
|
126
|
+
# @option options [String, Symbol] :relationship which relationship the data is from
|
127
|
+
#
|
128
|
+
# @option options [Integer] count: if it's rendering a collection of resources, the default
|
129
|
+
# gem's counting method can be bypassed by the use of this options. It's shows then the total
|
130
|
+
# records resulting from that request and also calculates the pagination.
|
131
|
+
#
|
132
|
+
# @return [JSONAPI::ResourcesOperationResult, JSONAPI::RelatedResourcesOperationResult]
|
133
|
+
#
|
134
|
+
# @api private
|
135
|
+
def build_collection_result(object, options)
|
136
|
+
records = build_collection(object, options)
|
137
|
+
result_options = result_options(object, options)
|
138
|
+
|
139
|
+
if related_resource_operation?(options)
|
140
|
+
source_resource = turn_source_into_resource(options[:source])
|
141
|
+
relationship_type = get_source_relationship(options)
|
142
|
+
|
143
|
+
JSONAPI::RelatedResourcesOperationResult.new(
|
144
|
+
:ok,
|
145
|
+
source_resource,
|
146
|
+
relationship_type,
|
147
|
+
records,
|
148
|
+
result_options
|
149
|
+
)
|
150
|
+
else
|
151
|
+
JSONAPI::ResourcesOperationResult.new(:ok, records, result_options)
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
# Is this a request for related resources?
|
156
|
+
#
|
157
|
+
# In order to answer that it needs to check for some {options}
|
158
|
+
# controller params like {params[:source]} and {params[:relationship]}.
|
159
|
+
#
|
160
|
+
# @option options [Boolean] :related when true, jsonapi-utils infers the parent and
|
161
|
+
# related resources from controller's {params} values.
|
162
|
+
#
|
163
|
+
# @option options [ActiveRecord::Base, JSONAPI::Resource] :source parent model/resource
|
164
|
+
# of the related resource
|
165
|
+
#
|
166
|
+
# @option options [String, Symbol] :relationship which relationship the data is from
|
167
|
+
#
|
168
|
+
# @return [Boolean]
|
169
|
+
#
|
170
|
+
# @api private
|
171
|
+
def related_resource_operation?(options)
|
172
|
+
(options[:related] || options[:source].present?) &&
|
173
|
+
params[:source].present? &&
|
174
|
+
params[:relationship].present?
|
175
|
+
end
|
176
|
+
|
108
177
|
# Apply a proper action setup for custom requests/actions.
|
109
178
|
#
|
110
179
|
# @note The setup_(index|show)_action comes from JSONAPI::Resources' API.
|
@@ -134,10 +203,9 @@ module JSONAPI
|
|
134
203
|
# Objects to be instantiated as JSONAPI::Resource ones.
|
135
204
|
# e.g.: User.all, [{ data: { id: 1, first_name: 'Tiago' } }]
|
136
205
|
#
|
137
|
-
# @option options [JSONAPI::Resource] resource
|
138
|
-
# class to be used rather than use an infered one (default behaviour)
|
206
|
+
# @option options [JSONAPI::Resource] :resource it resource class to be used rather than default one (infered)
|
139
207
|
#
|
140
|
-
# @option options [Integer] count
|
208
|
+
# @option options [Integer] :count if it's rendering a collection of resources, the default
|
141
209
|
# gem's counting method can be bypassed by the use of this options. It's shows then the total
|
142
210
|
# records resulting from that request and also calculates the pagination.
|
143
211
|
#
|
@@ -171,6 +239,30 @@ module JSONAPI
|
|
171
239
|
end
|
172
240
|
end
|
173
241
|
|
242
|
+
# Get JSONAPI::Resource for source object
|
243
|
+
#
|
244
|
+
# @param record [ActiveRecord::Base, JSONAPI::Resource]
|
245
|
+
#
|
246
|
+
# @return [JSONAPI::Resource]
|
247
|
+
#
|
248
|
+
# @api private
|
249
|
+
def turn_source_into_resource(record)
|
250
|
+
return record if record.kind_of?(JSONAPI::Resource)
|
251
|
+
@request.source_klass.new(record, context)
|
252
|
+
end
|
253
|
+
|
254
|
+
# Get relationship type of source object
|
255
|
+
#
|
256
|
+
# @option options [Symbol] relationship: it tells which relationship
|
257
|
+
# to be used rather than use an infered one (default behaviour)
|
258
|
+
#
|
259
|
+
# @return [Symbol]
|
260
|
+
#
|
261
|
+
# @api private
|
262
|
+
def get_source_relationship(options)
|
263
|
+
options[:relationship]&.to_sym || @request.resource_klass._type
|
264
|
+
end
|
265
|
+
|
174
266
|
# Apply some result options like pagination params and record count to collection responses.
|
175
267
|
#
|
176
268
|
# @param records [ActiveRecord::Relation, Hash, Array<Hash>]
|
@@ -186,8 +278,7 @@ module JSONAPI
|
|
186
278
|
# @api private
|
187
279
|
def result_options(records, options)
|
188
280
|
{}.tap do |data|
|
189
|
-
if
|
190
|
-
JSONAPI.configuration.top_level_links_include_pagination
|
281
|
+
if include_pagination_links?
|
191
282
|
data[:pagination_params] = pagination_params(records, options)
|
192
283
|
end
|
193
284
|
|
@@ -195,7 +286,7 @@ module JSONAPI
|
|
195
286
|
data[:record_count] = record_count_for(records, options)
|
196
287
|
end
|
197
288
|
|
198
|
-
if
|
289
|
+
if include_page_count?
|
199
290
|
data[:page_count] = page_count_for(data[:record_count])
|
200
291
|
end
|
201
292
|
end
|
@@ -14,6 +14,11 @@ module JSONAPI
|
|
14
14
|
#
|
15
15
|
# @option options [JSONAPI::Resource] resource: it tells the render which resource
|
16
16
|
# class to be used rather than use an infered one (default behaviour)
|
17
|
+
#
|
18
|
+
# @option options [JSONAPI::Resource] source_resource: it tells the render that this response is from a related resource
|
19
|
+
# and the result should be interpreted as a related resources response
|
20
|
+
#
|
21
|
+
# @option options [String, Symbol] relationship_type: it tells that the render which relationship the data is from
|
17
22
|
#
|
18
23
|
# @option options [ActiveRecord::Base] model: ActiveRecord model class to be instantiated
|
19
24
|
# when a Hash or Array of Hashes is passed to the "json" key argument
|
@@ -4,20 +4,40 @@ module JSONAPI
|
|
4
4
|
module Pagination
|
5
5
|
RecordCountError = Class.new(ArgumentError)
|
6
6
|
|
7
|
+
# Check whether pagination links should be included.
|
8
|
+
#
|
9
|
+
# @api public
|
10
|
+
# @return [Boolean]
|
11
|
+
def include_pagination_links?
|
12
|
+
JSONAPI.configuration.default_paginator != :none &&
|
13
|
+
JSONAPI.configuration.top_level_links_include_pagination
|
14
|
+
end
|
15
|
+
|
16
|
+
# Check whether pagination's page count should be included
|
17
|
+
# on the "meta" key.
|
18
|
+
#
|
19
|
+
# @api public
|
20
|
+
# @return [Boolean]
|
21
|
+
def include_page_count?
|
22
|
+
JSONAPI.configuration.top_level_meta_include_page_count
|
23
|
+
end
|
24
|
+
|
7
25
|
# Apply proper pagination to the records.
|
8
26
|
#
|
9
27
|
# @param records [ActiveRecord::Relation, Array] collection of records
|
10
28
|
# e.g.: User.all or [{ id: 1, name: 'Tiago' }, { id: 2, name: 'Doug' }]
|
11
29
|
#
|
12
|
-
# @param options [Hash]
|
30
|
+
# @param options [Hash] JSONAPI::Utils' options
|
13
31
|
# e.g.: { resource: V2::UserResource, count: 100 }
|
14
32
|
#
|
15
33
|
# @return [ActiveRecord::Relation, Array]
|
16
34
|
#
|
17
35
|
# @api public
|
18
36
|
def apply_pagination(records, options = {})
|
19
|
-
|
20
|
-
records.is_a?(Array)
|
37
|
+
if !apply_pagination?(options) then records
|
38
|
+
elsif records.is_a?(Array) then records[paginate_with(:range)]
|
39
|
+
else paginate_with(:paginator).apply(records, nil)
|
40
|
+
end
|
21
41
|
end
|
22
42
|
|
23
43
|
# Mount pagination params for JSONAPI::ResourcesOperationResult.
|
@@ -32,9 +52,10 @@ module JSONAPI
|
|
32
52
|
# @return [Hash]
|
33
53
|
# e.g.: {"first"=>{"number"=>1, "size"=>2}, "next"=>{"number"=>2, "size"=>2}, "last"=>{"number"=>2, "size"=>2}}
|
34
54
|
#
|
55
|
+
#
|
35
56
|
# @api public
|
36
57
|
def pagination_params(records, options)
|
37
|
-
return {} unless
|
58
|
+
return {} unless include_pagination_links?
|
38
59
|
paginator.links_page_params(record_count: record_count_for(records, options))
|
39
60
|
end
|
40
61
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jsonapi-utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tiago Guedes
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2020-04-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: jsonapi-resources
|
@@ -17,98 +17,122 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - '='
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 0.9.
|
20
|
+
version: 0.9.11
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - '='
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 0.9.
|
27
|
+
version: 0.9.11
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: bundler
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '1.
|
34
|
+
version: '1.14'
|
35
|
+
- - ">="
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '1.14'
|
35
38
|
type: :development
|
36
39
|
prerelease: false
|
37
40
|
version_requirements: !ruby/object:Gem::Requirement
|
38
41
|
requirements:
|
39
42
|
- - "~>"
|
40
43
|
- !ruby/object:Gem::Version
|
41
|
-
version: '1.
|
44
|
+
version: '1.14'
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.14'
|
42
48
|
- !ruby/object:Gem::Dependency
|
43
49
|
name: rake
|
44
50
|
requirement: !ruby/object:Gem::Requirement
|
45
51
|
requirements:
|
46
52
|
- - "~>"
|
47
53
|
- !ruby/object:Gem::Version
|
48
|
-
version: '
|
54
|
+
version: '12.3'
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: 12.3.3
|
49
58
|
type: :development
|
50
59
|
prerelease: false
|
51
60
|
version_requirements: !ruby/object:Gem::Requirement
|
52
61
|
requirements:
|
53
62
|
- - "~>"
|
54
63
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
64
|
+
version: '12.3'
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: 12.3.3
|
56
68
|
- !ruby/object:Gem::Dependency
|
57
69
|
name: rails
|
58
70
|
requirement: !ruby/object:Gem::Requirement
|
59
71
|
requirements:
|
60
72
|
- - "~>"
|
61
73
|
- !ruby/object:Gem::Version
|
62
|
-
version: '5.
|
74
|
+
version: '5.2'
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 5.2.4
|
63
78
|
type: :development
|
64
79
|
prerelease: false
|
65
80
|
version_requirements: !ruby/object:Gem::Requirement
|
66
81
|
requirements:
|
67
82
|
- - "~>"
|
68
83
|
- !ruby/object:Gem::Version
|
69
|
-
version: '5.
|
84
|
+
version: '5.2'
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: 5.2.4
|
70
88
|
- !ruby/object:Gem::Dependency
|
71
89
|
name: sqlite3
|
72
90
|
requirement: !ruby/object:Gem::Requirement
|
73
91
|
requirements:
|
74
|
-
- - "
|
92
|
+
- - "~>"
|
75
93
|
- !ruby/object:Gem::Version
|
76
|
-
version: '
|
94
|
+
version: '1.4'
|
77
95
|
type: :development
|
78
96
|
prerelease: false
|
79
97
|
version_requirements: !ruby/object:Gem::Requirement
|
80
98
|
requirements:
|
81
|
-
- - "
|
99
|
+
- - "~>"
|
82
100
|
- !ruby/object:Gem::Version
|
83
|
-
version: '
|
101
|
+
version: '1.4'
|
84
102
|
- !ruby/object:Gem::Dependency
|
85
103
|
name: rspec-rails
|
86
104
|
requirement: !ruby/object:Gem::Requirement
|
87
105
|
requirements:
|
88
106
|
- - "~>"
|
89
107
|
- !ruby/object:Gem::Version
|
90
|
-
version: '3.
|
108
|
+
version: '3.9'
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: 3.9.0
|
91
112
|
type: :development
|
92
113
|
prerelease: false
|
93
114
|
version_requirements: !ruby/object:Gem::Requirement
|
94
115
|
requirements:
|
95
116
|
- - "~>"
|
96
117
|
- !ruby/object:Gem::Version
|
97
|
-
version: '3.
|
118
|
+
version: '3.9'
|
119
|
+
- - ">="
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: 3.9.0
|
98
122
|
- !ruby/object:Gem::Dependency
|
99
|
-
name:
|
123
|
+
name: factory_bot
|
100
124
|
requirement: !ruby/object:Gem::Requirement
|
101
125
|
requirements:
|
102
126
|
- - "~>"
|
103
127
|
- !ruby/object:Gem::Version
|
104
|
-
version: '
|
128
|
+
version: '5.1'
|
105
129
|
type: :development
|
106
130
|
prerelease: false
|
107
131
|
version_requirements: !ruby/object:Gem::Requirement
|
108
132
|
requirements:
|
109
133
|
- - "~>"
|
110
134
|
- !ruby/object:Gem::Version
|
111
|
-
version: '
|
135
|
+
version: '5.1'
|
112
136
|
- !ruby/object:Gem::Dependency
|
113
137
|
name: smart_rspec
|
114
138
|
requirement: !ruby/object:Gem::Requirement
|
@@ -129,28 +153,40 @@ dependencies:
|
|
129
153
|
requirements:
|
130
154
|
- - "~>"
|
131
155
|
- !ruby/object:Gem::Version
|
132
|
-
version: 0.
|
156
|
+
version: '0.12'
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: 0.12.2
|
133
160
|
type: :development
|
134
161
|
prerelease: false
|
135
162
|
version_requirements: !ruby/object:Gem::Requirement
|
136
163
|
requirements:
|
137
164
|
- - "~>"
|
138
165
|
- !ruby/object:Gem::Version
|
139
|
-
version: 0.
|
166
|
+
version: '0.12'
|
167
|
+
- - ">="
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: 0.12.2
|
140
170
|
- !ruby/object:Gem::Dependency
|
141
171
|
name: pry-byebug
|
142
172
|
requirement: !ruby/object:Gem::Requirement
|
143
173
|
requirements:
|
174
|
+
- - "~>"
|
175
|
+
- !ruby/object:Gem::Version
|
176
|
+
version: '3.7'
|
144
177
|
- - ">="
|
145
178
|
- !ruby/object:Gem::Version
|
146
|
-
version:
|
179
|
+
version: 3.7.0
|
147
180
|
type: :development
|
148
181
|
prerelease: false
|
149
182
|
version_requirements: !ruby/object:Gem::Requirement
|
150
183
|
requirements:
|
184
|
+
- - "~>"
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: '3.7'
|
151
187
|
- - ">="
|
152
188
|
- !ruby/object:Gem::Version
|
153
|
-
version:
|
189
|
+
version: 3.7.0
|
154
190
|
description: Build JSON API-compliant APIs on Rails with no (or less) learning curve.
|
155
191
|
email:
|
156
192
|
- tiagopog@gmail.com
|
@@ -163,6 +199,7 @@ files:
|
|
163
199
|
- LICENSE.txt
|
164
200
|
- README.md
|
165
201
|
- bin/console
|
202
|
+
- bin/rspec
|
166
203
|
- bin/setup
|
167
204
|
- lib/jsonapi/utils.rb
|
168
205
|
- lib/jsonapi/utils/exceptions.rb
|
@@ -199,7 +236,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
199
236
|
version: '0'
|
200
237
|
requirements: []
|
201
238
|
rubyforge_project:
|
202
|
-
rubygems_version: 2.
|
239
|
+
rubygems_version: 2.7.7
|
203
240
|
signing_key:
|
204
241
|
specification_version: 4
|
205
242
|
summary: JSON::Utils is a simple way to get a full-featured JSON API on your Rails
|