jsonapi_compliable 0.6.4 → 0.6.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/.travis.yml +11 -3
- data/.yardopts +1 -0
- data/README.md +10 -1
- data/Rakefile +1 -0
- data/docs/JsonapiCompliable.html +202 -0
- data/docs/JsonapiCompliable/Adapters.html +119 -0
- data/docs/JsonapiCompliable/Adapters/Abstract.html +2285 -0
- data/docs/JsonapiCompliable/Adapters/ActiveRecord.html +2151 -0
- data/docs/JsonapiCompliable/Adapters/ActiveRecordSideloading.html +582 -0
- data/docs/JsonapiCompliable/Adapters/Null.html +1682 -0
- data/docs/JsonapiCompliable/Base.html +1395 -0
- data/docs/JsonapiCompliable/Deserializer.html +835 -0
- data/docs/JsonapiCompliable/Errors.html +115 -0
- data/docs/JsonapiCompliable/Errors/BadFilter.html +124 -0
- data/docs/JsonapiCompliable/Errors/StatNotFound.html +266 -0
- data/docs/JsonapiCompliable/Errors/UnsupportedPageSize.html +264 -0
- data/docs/JsonapiCompliable/Errors/ValidationError.html +124 -0
- data/docs/JsonapiCompliable/Extensions.html +117 -0
- data/docs/JsonapiCompliable/Extensions/BooleanAttribute.html +212 -0
- data/docs/JsonapiCompliable/Extensions/BooleanAttribute/ClassMethods.html +229 -0
- data/docs/JsonapiCompliable/Extensions/ExtraAttribute.html +242 -0
- data/docs/JsonapiCompliable/Extensions/ExtraAttribute/ClassMethods.html +237 -0
- data/docs/JsonapiCompliable/Query.html +1099 -0
- data/docs/JsonapiCompliable/Rails.html +211 -0
- data/docs/JsonapiCompliable/Resource.html +5241 -0
- data/docs/JsonapiCompliable/Scope.html +703 -0
- data/docs/JsonapiCompliable/Scoping.html +117 -0
- data/docs/JsonapiCompliable/Scoping/Base.html +843 -0
- data/docs/JsonapiCompliable/Scoping/DefaultFilter.html +318 -0
- data/docs/JsonapiCompliable/Scoping/ExtraFields.html +301 -0
- data/docs/JsonapiCompliable/Scoping/Filter.html +313 -0
- data/docs/JsonapiCompliable/Scoping/Filterable.html +364 -0
- data/docs/JsonapiCompliable/Scoping/Paginate.html +613 -0
- data/docs/JsonapiCompliable/Scoping/Sort.html +454 -0
- data/docs/JsonapiCompliable/SerializableTempId.html +216 -0
- data/docs/JsonapiCompliable/Sideload.html +2484 -0
- data/docs/JsonapiCompliable/Stats.html +117 -0
- data/docs/JsonapiCompliable/Stats/DSL.html +999 -0
- data/docs/JsonapiCompliable/Stats/Payload.html +391 -0
- data/docs/JsonapiCompliable/Util.html +117 -0
- data/docs/JsonapiCompliable/Util/FieldParams.html +228 -0
- data/docs/JsonapiCompliable/Util/Hash.html +471 -0
- data/docs/JsonapiCompliable/Util/IncludeParams.html +299 -0
- data/docs/JsonapiCompliable/Util/Persistence.html +435 -0
- data/docs/JsonapiCompliable/Util/RelationshipPayload.html +563 -0
- data/docs/JsonapiCompliable/Util/RenderOptions.html +250 -0
- data/docs/JsonapiCompliable/Util/ValidationResponse.html +532 -0
- data/docs/_index.html +527 -0
- data/docs/class_list.html +51 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +58 -0
- data/docs/css/style.css +492 -0
- data/docs/file.README.html +99 -0
- data/docs/file_list.html +56 -0
- data/docs/frames.html +17 -0
- data/docs/index.html +99 -0
- data/docs/js/app.js +248 -0
- data/docs/js/full_list.js +216 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +1731 -0
- data/docs/top-level-namespace.html +110 -0
- data/gemfiles/rails_5.gemfile +1 -1
- data/lib/jsonapi_compliable/adapters/abstract.rb +267 -4
- data/lib/jsonapi_compliable/adapters/active_record.rb +23 -1
- data/lib/jsonapi_compliable/adapters/null.rb +43 -3
- data/lib/jsonapi_compliable/base.rb +182 -33
- data/lib/jsonapi_compliable/deserializer.rb +90 -21
- data/lib/jsonapi_compliable/extensions/boolean_attribute.rb +12 -0
- data/lib/jsonapi_compliable/extensions/extra_attribute.rb +32 -0
- data/lib/jsonapi_compliable/extensions/temp_id.rb +11 -0
- data/lib/jsonapi_compliable/query.rb +94 -2
- data/lib/jsonapi_compliable/rails.rb +8 -0
- data/lib/jsonapi_compliable/resource.rb +548 -11
- data/lib/jsonapi_compliable/scope.rb +43 -1
- data/lib/jsonapi_compliable/scoping/base.rb +59 -8
- data/lib/jsonapi_compliable/scoping/default_filter.rb +33 -0
- data/lib/jsonapi_compliable/scoping/extra_fields.rb +33 -0
- data/lib/jsonapi_compliable/scoping/filter.rb +29 -2
- data/lib/jsonapi_compliable/scoping/filterable.rb +4 -0
- data/lib/jsonapi_compliable/scoping/paginate.rb +33 -0
- data/lib/jsonapi_compliable/scoping/sort.rb +18 -0
- data/lib/jsonapi_compliable/sideload.rb +229 -1
- data/lib/jsonapi_compliable/stats/dsl.rb +44 -0
- data/lib/jsonapi_compliable/stats/payload.rb +20 -0
- data/lib/jsonapi_compliable/util/field_params.rb +1 -0
- data/lib/jsonapi_compliable/util/hash.rb +18 -0
- data/lib/jsonapi_compliable/util/include_params.rb +22 -0
- data/lib/jsonapi_compliable/util/persistence.rb +13 -3
- data/lib/jsonapi_compliable/util/relationship_payload.rb +2 -0
- data/lib/jsonapi_compliable/util/render_options.rb +2 -0
- data/lib/jsonapi_compliable/util/validation_response.rb +16 -0
- data/lib/jsonapi_compliable/version.rb +1 -1
- metadata +60 -5
- data/gemfiles/rails_4.gemfile.lock +0 -208
- data/gemfiles/rails_5.gemfile.lock +0 -212
- data/lib/jsonapi_compliable/write.rb +0 -93
@@ -1,8 +1,34 @@
|
|
1
1
|
module JsonapiCompliable
|
2
2
|
module Stats
|
3
|
+
# Provides an easier interface to stats scoping.
|
4
|
+
#
|
5
|
+
# Used within Resource DSL:
|
6
|
+
#
|
7
|
+
# allow_stat total: [:count] do
|
8
|
+
# # ... eval'd in Stats::DSL context! ...
|
9
|
+
# end
|
10
|
+
#
|
11
|
+
# This allows us to define arbitrary stats:
|
12
|
+
#
|
13
|
+
# allow_stat total: [:count] do
|
14
|
+
# standard_deviation { |scope, attr| ... }
|
15
|
+
# end
|
16
|
+
#
|
17
|
+
# And use convenience methods:
|
18
|
+
#
|
19
|
+
# allow_stat :rating do
|
20
|
+
# count!
|
21
|
+
# average!
|
22
|
+
# end
|
23
|
+
#
|
24
|
+
# @see Resource.allow_stat
|
25
|
+
# @attr_reader [Symbol] name the stat, e.g. :total
|
26
|
+
# @attr_reader [Hash] calculations procs for various metrics
|
3
27
|
class DSL
|
4
28
|
attr_reader :name, :calculations
|
5
29
|
|
30
|
+
# @param [Adapters::Abstract] adapter the Resource adapter
|
31
|
+
# @param [Symbol, Hash] config example: +:total+ or +{ total: [:count] }+
|
6
32
|
def initialize(adapter, config)
|
7
33
|
config = { config => [] } if config.is_a?(Symbol)
|
8
34
|
|
@@ -12,31 +38,49 @@ module JsonapiCompliable
|
|
12
38
|
Array(config.values.first).each { |c| send(:"#{c}!") }
|
13
39
|
end
|
14
40
|
|
41
|
+
# Used for defining arbitrary stats within the DSL:
|
42
|
+
#
|
43
|
+
# allow_stat :total do
|
44
|
+
# standard_deviation { |scope, attr| ... }
|
45
|
+
# end
|
46
|
+
#
|
47
|
+
# ...will hit +method_missing+ and store the proc for future reference.
|
48
|
+
# @api private
|
15
49
|
def method_missing(meth, *args, &blk)
|
16
50
|
@calculations[meth] = blk
|
17
51
|
end
|
18
52
|
|
53
|
+
# Grab a calculation proc. Raises error if no corresponding stat
|
54
|
+
# has been configured.
|
55
|
+
#
|
56
|
+
# @param [String, Symbol] name the name of the calculation, e.g. +:total+
|
57
|
+
# @return [Proc] the proc to run the calculation
|
19
58
|
def calculation(name)
|
20
59
|
callable = @calculations[name] || @calculations[name.to_sym]
|
21
60
|
callable || raise(Errors::StatNotFound.new(@name, name))
|
22
61
|
end
|
23
62
|
|
63
|
+
# Convenience method for default :count proc
|
24
64
|
def count!
|
25
65
|
@calculations[:count] = @adapter.method(:count)
|
26
66
|
end
|
27
67
|
|
68
|
+
# Convenience method for default :sum proc
|
28
69
|
def sum!
|
29
70
|
@calculations[:sum] = @adapter.method(:sum)
|
30
71
|
end
|
31
72
|
|
73
|
+
# Convenience method for default :average proc
|
32
74
|
def average!
|
33
75
|
@calculations[:average] = @adapter.method(:average)
|
34
76
|
end
|
35
77
|
|
78
|
+
# Convenience method for default :maximum proc
|
36
79
|
def maximum!
|
37
80
|
@calculations[:maximum] = @adapter.method(:maximum)
|
38
81
|
end
|
39
82
|
|
83
|
+
# Convenience method for default :minimum proc
|
40
84
|
def minimum!
|
41
85
|
@calculations[:minimum] = @adapter.method(:minimum)
|
42
86
|
end
|
@@ -1,12 +1,32 @@
|
|
1
1
|
module JsonapiCompliable
|
2
2
|
module Stats
|
3
|
+
# Generate the stats payload so we can return it in the response.
|
4
|
+
#
|
5
|
+
# {
|
6
|
+
# data: [...],
|
7
|
+
# meta: { stats: the_generated_payload }
|
8
|
+
# }
|
9
|
+
#
|
10
|
+
# For example:
|
11
|
+
#
|
12
|
+
# {
|
13
|
+
# data: [...],
|
14
|
+
# meta: { stats: { total: { count: 100 } } }
|
15
|
+
# }
|
3
16
|
class Payload
|
17
|
+
# @param [Resource] resource the resource instance
|
18
|
+
# @param [Hash] query_hash the Query#to_hash for the current resource
|
19
|
+
# @param scope the scope we are chaining/modifying
|
4
20
|
def initialize(resource, query_hash, scope)
|
5
21
|
@resource = resource
|
6
22
|
@query_hash = query_hash[:stats]
|
7
23
|
@scope = scope
|
8
24
|
end
|
9
25
|
|
26
|
+
# Generate the payload for +{ meta: { stats: { ... } } }+
|
27
|
+
# Loops over all calculations, computes then, and gives back
|
28
|
+
# a hash of stats and their results.
|
29
|
+
# @return [Hash] the generated payload
|
10
30
|
def generate
|
11
31
|
{}.tap do |stats|
|
12
32
|
@query_hash.each_pair do |name, calculation|
|
@@ -1,6 +1,19 @@
|
|
1
1
|
module JsonapiCompliable
|
2
2
|
module Util
|
3
|
+
# @api private
|
3
4
|
class Hash
|
5
|
+
# Grab all keys at any level of the hash.
|
6
|
+
#
|
7
|
+
# { foo: { bar: { baz: {} } } }
|
8
|
+
#
|
9
|
+
# Becomes
|
10
|
+
#
|
11
|
+
# [:foo, :bar, :bar]
|
12
|
+
#
|
13
|
+
# @param hash the hash we want to process
|
14
|
+
# @param [Array<Symbol, String>] collection the memoized collection of keys
|
15
|
+
# @return [Array<Symbol, String>] the keys
|
16
|
+
# @api private
|
4
17
|
def self.keys(hash, collection = [])
|
5
18
|
hash.each_pair do |key, value|
|
6
19
|
collection << key
|
@@ -10,11 +23,16 @@ module JsonapiCompliable
|
|
10
23
|
collection
|
11
24
|
end
|
12
25
|
|
26
|
+
# Like ActiveSupport's #deep_merge
|
27
|
+
# @return [Hash] the merged hash
|
28
|
+
# @api private
|
13
29
|
def self.deep_merge!(hash, other)
|
14
30
|
merger = proc { |key, v1, v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : v2 }
|
15
31
|
hash.merge!(other, &merger)
|
16
32
|
end
|
17
33
|
|
34
|
+
# Like ActiveSupport's #deep_dup
|
35
|
+
# @api private
|
18
36
|
def self.deep_dup(hash)
|
19
37
|
if hash.respond_to?(:deep_dup)
|
20
38
|
hash.deep_dup
|
@@ -1,7 +1,29 @@
|
|
1
1
|
module JsonapiCompliable
|
2
2
|
module Util
|
3
|
+
# Utility class for dealing with Include Directives
|
3
4
|
class IncludeParams
|
4
5
|
class << self
|
6
|
+
# Let's say the user requested these sideloads:
|
7
|
+
#
|
8
|
+
# GET /posts?include=comments.author
|
9
|
+
#
|
10
|
+
# But our resource had this code:
|
11
|
+
#
|
12
|
+
# sideload_whitelist({ index: [:comments] })
|
13
|
+
#
|
14
|
+
# We should drop the 'author' sideload from the request.
|
15
|
+
#
|
16
|
+
# Hashes become 'include directive hashes' within the library. ie
|
17
|
+
#
|
18
|
+
# [:tags, { comments: :author }]
|
19
|
+
#
|
20
|
+
# Becomes
|
21
|
+
#
|
22
|
+
# { tags: {}, comments: { author: {} } }
|
23
|
+
#
|
24
|
+
# @param [Hash] requested_includes the nested hash the user requested
|
25
|
+
# @param [Hash] allowed_includes the nested hash configured via DSL
|
26
|
+
# @return [Hash] the scrubbed hash
|
5
27
|
def scrub(requested_includes, allowed_includes)
|
6
28
|
{}.tap do |valid|
|
7
29
|
requested_includes.each_pair do |key, sub_hash|
|
@@ -1,4 +1,10 @@
|
|
1
|
+
# Save the given Resource#model, and all of its nested relationships.
|
2
|
+
# @api private
|
1
3
|
class JsonapiCompliable::Util::Persistence
|
4
|
+
# @param [Resource] resource the resource instance
|
5
|
+
# @param [Hash] meta see (Deserializer#meta)
|
6
|
+
# @param [Hash] attributes see (Deserializer#attributes)
|
7
|
+
# @param [Hash] relationships see (Deserializer#relationships)
|
2
8
|
def initialize(resource, meta, attributes, relationships)
|
3
9
|
@resource = resource
|
4
10
|
@meta = meta
|
@@ -6,9 +12,11 @@ class JsonapiCompliable::Util::Persistence
|
|
6
12
|
@relationships = relationships
|
7
13
|
end
|
8
14
|
|
15
|
+
# Perform the actual save logic.
|
16
|
+
#
|
9
17
|
# belongs_to must be processed before/separately from has_many -
|
10
18
|
# we need to know the primary key value of the parent before
|
11
|
-
# persisting the child
|
19
|
+
# persisting the child.
|
12
20
|
#
|
13
21
|
# Flow:
|
14
22
|
# * process parents
|
@@ -19,6 +27,8 @@ class JsonapiCompliable::Util::Persistence
|
|
19
27
|
# * process children
|
20
28
|
# * associate children
|
21
29
|
# * return current object
|
30
|
+
#
|
31
|
+
# @return the persisted model instance
|
22
32
|
def run
|
23
33
|
parents = process_belongs_to(@relationships)
|
24
34
|
update_foreign_key_for_parents(parents)
|
@@ -35,6 +45,8 @@ class JsonapiCompliable::Util::Persistence
|
|
35
45
|
persisted unless @meta[:method] == :destroy
|
36
46
|
end
|
37
47
|
|
48
|
+
private
|
49
|
+
|
38
50
|
# The child's attributes should be modified to nil-out the
|
39
51
|
# foreign_key when the parent is being destroyed or disassociated
|
40
52
|
def update_foreign_key(parent_object, attrs, x)
|
@@ -99,8 +111,6 @@ class JsonapiCompliable::Util::Persistence
|
|
99
111
|
object.instance_variable_set(:@_jsonapi_temp_id, temp_id)
|
100
112
|
end
|
101
113
|
|
102
|
-
private
|
103
|
-
|
104
114
|
def iterate(only: [], except: [])
|
105
115
|
opts = {
|
106
116
|
resource: @resource,
|
@@ -1,5 +1,7 @@
|
|
1
1
|
module JsonapiCompliable
|
2
2
|
module Util
|
3
|
+
# Generate the options we end up passing to {{http://jsonapi-rb.org jsonapi-rb}}
|
4
|
+
# @api private
|
3
5
|
class RenderOptions
|
4
6
|
def self.generate(object, query_hash, overrides = {})
|
5
7
|
resolved = object.respond_to?(:resolve) ? object.resolve : object
|
@@ -1,15 +1,31 @@
|
|
1
|
+
# We need to know two things in the response of a persistence call:
|
2
|
+
#
|
3
|
+
# * The model we just tried to persist
|
4
|
+
# * Was the persistence successful?
|
5
|
+
#
|
6
|
+
# This object wraps those bits of data. The call is considered
|
7
|
+
# unsuccessful when it adheres to the ActiveModel#errors interface,
|
8
|
+
# and #errors is not blank. In other words, it is not successful if
|
9
|
+
# there were validation errors.
|
10
|
+
#
|
11
|
+
# @attr_reader object the object we are saving
|
1
12
|
class JsonapiCompliable::Util::ValidationResponse
|
2
13
|
attr_reader :object
|
3
14
|
|
15
|
+
# @param object the model instance we tried to save
|
16
|
+
# @param deserialized_params see Base#deserialized_params
|
4
17
|
def initialize(object, deserialized_params)
|
5
18
|
@object = object
|
6
19
|
@deserialized_params = deserialized_params
|
7
20
|
end
|
8
21
|
|
22
|
+
# Check to ensure no validation errors.
|
23
|
+
# @return [Boolean] did the persistence call succeed?
|
9
24
|
def success?
|
10
25
|
all_valid?(object, @deserialized_params.relationships)
|
11
26
|
end
|
12
27
|
|
28
|
+
# @return [Array] the object and success state
|
13
29
|
def to_a
|
14
30
|
[object, success?]
|
15
31
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jsonapi_compliable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lee Richmond
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-05-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: jsonapi-serializable
|
@@ -127,6 +127,7 @@ files:
|
|
127
127
|
- ".rspec"
|
128
128
|
- ".ruby-version"
|
129
129
|
- ".travis.yml"
|
130
|
+
- ".yardopts"
|
130
131
|
- Appraisals
|
131
132
|
- CODE_OF_CONDUCT.md
|
132
133
|
- Gemfile
|
@@ -138,10 +139,65 @@ files:
|
|
138
139
|
- bin/console
|
139
140
|
- bin/rspec
|
140
141
|
- bin/setup
|
142
|
+
- docs/JsonapiCompliable.html
|
143
|
+
- docs/JsonapiCompliable/Adapters.html
|
144
|
+
- docs/JsonapiCompliable/Adapters/Abstract.html
|
145
|
+
- docs/JsonapiCompliable/Adapters/ActiveRecord.html
|
146
|
+
- docs/JsonapiCompliable/Adapters/ActiveRecordSideloading.html
|
147
|
+
- docs/JsonapiCompliable/Adapters/Null.html
|
148
|
+
- docs/JsonapiCompliable/Base.html
|
149
|
+
- docs/JsonapiCompliable/Deserializer.html
|
150
|
+
- docs/JsonapiCompliable/Errors.html
|
151
|
+
- docs/JsonapiCompliable/Errors/BadFilter.html
|
152
|
+
- docs/JsonapiCompliable/Errors/StatNotFound.html
|
153
|
+
- docs/JsonapiCompliable/Errors/UnsupportedPageSize.html
|
154
|
+
- docs/JsonapiCompliable/Errors/ValidationError.html
|
155
|
+
- docs/JsonapiCompliable/Extensions.html
|
156
|
+
- docs/JsonapiCompliable/Extensions/BooleanAttribute.html
|
157
|
+
- docs/JsonapiCompliable/Extensions/BooleanAttribute/ClassMethods.html
|
158
|
+
- docs/JsonapiCompliable/Extensions/ExtraAttribute.html
|
159
|
+
- docs/JsonapiCompliable/Extensions/ExtraAttribute/ClassMethods.html
|
160
|
+
- docs/JsonapiCompliable/Query.html
|
161
|
+
- docs/JsonapiCompliable/Rails.html
|
162
|
+
- docs/JsonapiCompliable/Resource.html
|
163
|
+
- docs/JsonapiCompliable/Scope.html
|
164
|
+
- docs/JsonapiCompliable/Scoping.html
|
165
|
+
- docs/JsonapiCompliable/Scoping/Base.html
|
166
|
+
- docs/JsonapiCompliable/Scoping/DefaultFilter.html
|
167
|
+
- docs/JsonapiCompliable/Scoping/ExtraFields.html
|
168
|
+
- docs/JsonapiCompliable/Scoping/Filter.html
|
169
|
+
- docs/JsonapiCompliable/Scoping/Filterable.html
|
170
|
+
- docs/JsonapiCompliable/Scoping/Paginate.html
|
171
|
+
- docs/JsonapiCompliable/Scoping/Sort.html
|
172
|
+
- docs/JsonapiCompliable/SerializableTempId.html
|
173
|
+
- docs/JsonapiCompliable/Sideload.html
|
174
|
+
- docs/JsonapiCompliable/Stats.html
|
175
|
+
- docs/JsonapiCompliable/Stats/DSL.html
|
176
|
+
- docs/JsonapiCompliable/Stats/Payload.html
|
177
|
+
- docs/JsonapiCompliable/Util.html
|
178
|
+
- docs/JsonapiCompliable/Util/FieldParams.html
|
179
|
+
- docs/JsonapiCompliable/Util/Hash.html
|
180
|
+
- docs/JsonapiCompliable/Util/IncludeParams.html
|
181
|
+
- docs/JsonapiCompliable/Util/Persistence.html
|
182
|
+
- docs/JsonapiCompliable/Util/RelationshipPayload.html
|
183
|
+
- docs/JsonapiCompliable/Util/RenderOptions.html
|
184
|
+
- docs/JsonapiCompliable/Util/ValidationResponse.html
|
185
|
+
- docs/_index.html
|
186
|
+
- docs/class_list.html
|
187
|
+
- docs/css/common.css
|
188
|
+
- docs/css/full_list.css
|
189
|
+
- docs/css/style.css
|
190
|
+
- docs/file.README.html
|
191
|
+
- docs/file_list.html
|
192
|
+
- docs/frames.html
|
193
|
+
- docs/index.html
|
194
|
+
- docs/js/app.js
|
195
|
+
- docs/js/full_list.js
|
196
|
+
- docs/js/jquery.js
|
197
|
+
- docs/method_list.html
|
198
|
+
- docs/top-level-namespace.html
|
141
199
|
- gemfiles/rails_4.gemfile
|
142
|
-
- gemfiles/rails_4.gemfile.lock
|
143
200
|
- gemfiles/rails_5.gemfile
|
144
|
-
- gemfiles/rails_5.gemfile.lock
|
145
201
|
- jsonapi_compliable.gemspec
|
146
202
|
- lib/jsonapi_compliable.rb
|
147
203
|
- lib/jsonapi_compliable/adapters/abstract.rb
|
@@ -176,7 +232,6 @@ files:
|
|
176
232
|
- lib/jsonapi_compliable/util/render_options.rb
|
177
233
|
- lib/jsonapi_compliable/util/validation_response.rb
|
178
234
|
- lib/jsonapi_compliable/version.rb
|
179
|
-
- lib/jsonapi_compliable/write.rb
|
180
235
|
homepage:
|
181
236
|
licenses:
|
182
237
|
- MIT
|
@@ -1,208 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: ..
|
3
|
-
specs:
|
4
|
-
jsonapi_compliable (0.6.3)
|
5
|
-
jsonapi-serializable (~> 0.1)
|
6
|
-
|
7
|
-
GEM
|
8
|
-
remote: https://rubygems.org/
|
9
|
-
specs:
|
10
|
-
actionmailer (4.2.7.1)
|
11
|
-
actionpack (= 4.2.7.1)
|
12
|
-
actionview (= 4.2.7.1)
|
13
|
-
activejob (= 4.2.7.1)
|
14
|
-
mail (~> 2.5, >= 2.5.4)
|
15
|
-
rails-dom-testing (~> 1.0, >= 1.0.5)
|
16
|
-
actionpack (4.2.7.1)
|
17
|
-
actionview (= 4.2.7.1)
|
18
|
-
activesupport (= 4.2.7.1)
|
19
|
-
rack (~> 1.6)
|
20
|
-
rack-test (~> 0.6.2)
|
21
|
-
rails-dom-testing (~> 1.0, >= 1.0.5)
|
22
|
-
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
23
|
-
actionview (4.2.7.1)
|
24
|
-
activesupport (= 4.2.7.1)
|
25
|
-
builder (~> 3.1)
|
26
|
-
erubis (~> 2.7.0)
|
27
|
-
rails-dom-testing (~> 1.0, >= 1.0.5)
|
28
|
-
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
29
|
-
activejob (4.2.7.1)
|
30
|
-
activesupport (= 4.2.7.1)
|
31
|
-
globalid (>= 0.3.0)
|
32
|
-
activemodel (4.2.7.1)
|
33
|
-
activesupport (= 4.2.7.1)
|
34
|
-
builder (~> 3.1)
|
35
|
-
activerecord (4.2.7.1)
|
36
|
-
activemodel (= 4.2.7.1)
|
37
|
-
activesupport (= 4.2.7.1)
|
38
|
-
arel (~> 6.0)
|
39
|
-
activesupport (4.2.7.1)
|
40
|
-
i18n (~> 0.7)
|
41
|
-
json (~> 1.7, >= 1.7.7)
|
42
|
-
minitest (~> 5.1)
|
43
|
-
thread_safe (~> 0.3, >= 0.3.4)
|
44
|
-
tzinfo (~> 1.1)
|
45
|
-
appraisal (2.1.0)
|
46
|
-
bundler
|
47
|
-
rake
|
48
|
-
thor (>= 0.14.0)
|
49
|
-
arel (6.0.3)
|
50
|
-
builder (3.2.2)
|
51
|
-
byebug (9.0.6)
|
52
|
-
coderay (1.1.1)
|
53
|
-
concurrent-ruby (1.0.4)
|
54
|
-
database_cleaner (1.5.3)
|
55
|
-
diff-lcs (1.2.5)
|
56
|
-
erubis (2.7.0)
|
57
|
-
ffi (1.9.14)
|
58
|
-
formatador (0.2.5)
|
59
|
-
globalid (0.3.7)
|
60
|
-
activesupport (>= 4.1.0)
|
61
|
-
guard (2.14.0)
|
62
|
-
formatador (>= 0.2.4)
|
63
|
-
listen (>= 2.7, < 4.0)
|
64
|
-
lumberjack (~> 1.0)
|
65
|
-
nenv (~> 0.1)
|
66
|
-
notiffany (~> 0.0)
|
67
|
-
pry (>= 0.9.12)
|
68
|
-
shellany (~> 0.0)
|
69
|
-
thor (>= 0.18.1)
|
70
|
-
guard-compat (1.2.1)
|
71
|
-
guard-rspec (4.7.3)
|
72
|
-
guard (~> 2.1)
|
73
|
-
guard-compat (~> 1.1)
|
74
|
-
rspec (>= 2.99.0, < 4.0)
|
75
|
-
i18n (0.7.0)
|
76
|
-
json (1.8.3)
|
77
|
-
jsonapi-deserializable (0.1.1)
|
78
|
-
jsonapi-parser (= 0.1.1)
|
79
|
-
jsonapi-parser (0.1.1)
|
80
|
-
jsonapi-rails (0.1.1)
|
81
|
-
jsonapi-rb (= 0.1.1)
|
82
|
-
jsonapi-rb (0.1.1)
|
83
|
-
jsonapi-deserializable (= 0.1.1)
|
84
|
-
jsonapi-serializable (= 0.1.1)
|
85
|
-
jsonapi-renderer (0.1.1)
|
86
|
-
jsonapi-serializable (0.1.1)
|
87
|
-
jsonapi-renderer (= 0.1.1)
|
88
|
-
kaminari (0.17.0)
|
89
|
-
actionpack (>= 3.0.0)
|
90
|
-
activesupport (>= 3.0.0)
|
91
|
-
listen (3.1.5)
|
92
|
-
rb-fsevent (~> 0.9, >= 0.9.4)
|
93
|
-
rb-inotify (~> 0.9, >= 0.9.7)
|
94
|
-
ruby_dep (~> 1.2)
|
95
|
-
loofah (2.0.3)
|
96
|
-
nokogiri (>= 1.5.9)
|
97
|
-
lumberjack (1.0.10)
|
98
|
-
mail (2.6.4)
|
99
|
-
mime-types (>= 1.16, < 4)
|
100
|
-
method_source (0.8.2)
|
101
|
-
mime-types (3.1)
|
102
|
-
mime-types-data (~> 3.2015)
|
103
|
-
mime-types-data (3.2016.0521)
|
104
|
-
mini_portile2 (2.1.0)
|
105
|
-
minitest (5.10.1)
|
106
|
-
nenv (0.3.0)
|
107
|
-
nokogiri (1.6.8.1)
|
108
|
-
mini_portile2 (~> 2.1.0)
|
109
|
-
notiffany (0.1.1)
|
110
|
-
nenv (~> 0.1)
|
111
|
-
shellany (~> 0.0)
|
112
|
-
pry (0.10.4)
|
113
|
-
coderay (~> 1.1.0)
|
114
|
-
method_source (~> 0.8.1)
|
115
|
-
slop (~> 3.4)
|
116
|
-
pry-byebug (3.4.2)
|
117
|
-
byebug (~> 9.0)
|
118
|
-
pry (~> 0.10)
|
119
|
-
rack (1.6.5)
|
120
|
-
rack-test (0.6.3)
|
121
|
-
rack (>= 1.0)
|
122
|
-
rails (4.2.7.1)
|
123
|
-
actionmailer (= 4.2.7.1)
|
124
|
-
actionpack (= 4.2.7.1)
|
125
|
-
actionview (= 4.2.7.1)
|
126
|
-
activejob (= 4.2.7.1)
|
127
|
-
activemodel (= 4.2.7.1)
|
128
|
-
activerecord (= 4.2.7.1)
|
129
|
-
activesupport (= 4.2.7.1)
|
130
|
-
bundler (>= 1.3.0, < 2.0)
|
131
|
-
railties (= 4.2.7.1)
|
132
|
-
sprockets-rails
|
133
|
-
rails-deprecated_sanitizer (1.0.3)
|
134
|
-
activesupport (>= 4.2.0.alpha)
|
135
|
-
rails-dom-testing (1.0.7)
|
136
|
-
activesupport (>= 4.2.0.beta, < 5.0)
|
137
|
-
nokogiri (~> 1.6.0)
|
138
|
-
rails-deprecated_sanitizer (>= 1.0.1)
|
139
|
-
rails-html-sanitizer (1.0.3)
|
140
|
-
loofah (~> 2.0)
|
141
|
-
railties (4.2.7.1)
|
142
|
-
actionpack (= 4.2.7.1)
|
143
|
-
activesupport (= 4.2.7.1)
|
144
|
-
rake (>= 0.8.7)
|
145
|
-
thor (>= 0.18.1, < 2.0)
|
146
|
-
rake (10.5.0)
|
147
|
-
rb-fsevent (0.9.8)
|
148
|
-
rb-inotify (0.9.7)
|
149
|
-
ffi (>= 0.5.0)
|
150
|
-
rspec (3.5.0)
|
151
|
-
rspec-core (~> 3.5.0)
|
152
|
-
rspec-expectations (~> 3.5.0)
|
153
|
-
rspec-mocks (~> 3.5.0)
|
154
|
-
rspec-core (3.5.4)
|
155
|
-
rspec-support (~> 3.5.0)
|
156
|
-
rspec-expectations (3.5.0)
|
157
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
158
|
-
rspec-support (~> 3.5.0)
|
159
|
-
rspec-mocks (3.5.0)
|
160
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
161
|
-
rspec-support (~> 3.5.0)
|
162
|
-
rspec-rails (3.5.2)
|
163
|
-
actionpack (>= 3.0)
|
164
|
-
activesupport (>= 3.0)
|
165
|
-
railties (>= 3.0)
|
166
|
-
rspec-core (~> 3.5.0)
|
167
|
-
rspec-expectations (~> 3.5.0)
|
168
|
-
rspec-mocks (~> 3.5.0)
|
169
|
-
rspec-support (~> 3.5.0)
|
170
|
-
rspec-support (3.5.0)
|
171
|
-
ruby_dep (1.5.0)
|
172
|
-
shellany (0.0.1)
|
173
|
-
slop (3.6.0)
|
174
|
-
sprockets (3.7.0)
|
175
|
-
concurrent-ruby (~> 1.0)
|
176
|
-
rack (> 1, < 3)
|
177
|
-
sprockets-rails (3.2.0)
|
178
|
-
actionpack (>= 4.0)
|
179
|
-
activesupport (>= 4.0)
|
180
|
-
sprockets (>= 3.0.0)
|
181
|
-
sqlite3 (1.3.12)
|
182
|
-
thor (0.19.4)
|
183
|
-
thread_safe (0.3.5)
|
184
|
-
tzinfo (1.2.2)
|
185
|
-
thread_safe (~> 0.1)
|
186
|
-
|
187
|
-
PLATFORMS
|
188
|
-
ruby
|
189
|
-
|
190
|
-
DEPENDENCIES
|
191
|
-
activerecord (>= 4.1, < 6)
|
192
|
-
appraisal
|
193
|
-
bundler (~> 1.12)
|
194
|
-
database_cleaner
|
195
|
-
guard
|
196
|
-
guard-rspec
|
197
|
-
jsonapi-rails (~> 0.1)
|
198
|
-
jsonapi_compliable!
|
199
|
-
kaminari (~> 0.17)
|
200
|
-
pry
|
201
|
-
pry-byebug
|
202
|
-
rails (~> 4.1)
|
203
|
-
rake (~> 10.0)
|
204
|
-
rspec-rails
|
205
|
-
sqlite3
|
206
|
-
|
207
|
-
BUNDLED WITH
|
208
|
-
1.14.6
|