jsonapi_compliable 0.4.0 → 0.5.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.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/Appraisals +4 -0
  3. data/Gemfile +2 -2
  4. data/gemfiles/rails_4.gemfile +4 -3
  5. data/gemfiles/rails_4.gemfile.lock +27 -36
  6. data/gemfiles/rails_5.gemfile +4 -3
  7. data/gemfiles/rails_5.gemfile.lock +27 -37
  8. data/jsonapi_compliable.gemspec +3 -7
  9. data/lib/jsonapi_compliable/adapters/abstract.rb +25 -0
  10. data/lib/jsonapi_compliable/adapters/active_record.rb +47 -0
  11. data/lib/jsonapi_compliable/adapters/active_record_sideloading.rb +119 -0
  12. data/lib/jsonapi_compliable/adapters/null.rb +21 -0
  13. data/lib/jsonapi_compliable/base.rb +43 -50
  14. data/lib/jsonapi_compliable/deserializable.rb +9 -4
  15. data/lib/jsonapi_compliable/extensions/extra_attribute.rb +1 -5
  16. data/lib/jsonapi_compliable/query.rb +153 -0
  17. data/lib/jsonapi_compliable/rails.rb +14 -0
  18. data/lib/jsonapi_compliable/resource.rb +191 -0
  19. data/lib/jsonapi_compliable/scope.rb +57 -0
  20. data/lib/jsonapi_compliable/{scope → scoping}/base.rb +5 -6
  21. data/lib/jsonapi_compliable/{scope → scoping}/default_filter.rb +3 -3
  22. data/lib/jsonapi_compliable/scoping/extra_fields.rb +25 -0
  23. data/lib/jsonapi_compliable/{scope → scoping}/filter.rb +4 -4
  24. data/lib/jsonapi_compliable/{scope → scoping}/filterable.rb +4 -4
  25. data/lib/jsonapi_compliable/{scope → scoping}/paginate.rb +6 -6
  26. data/lib/jsonapi_compliable/scoping/sort.rb +33 -0
  27. data/lib/jsonapi_compliable/sideload.rb +95 -0
  28. data/lib/jsonapi_compliable/stats/dsl.rb +7 -16
  29. data/lib/jsonapi_compliable/stats/payload.rb +6 -14
  30. data/lib/jsonapi_compliable/util/field_params.rb +6 -8
  31. data/lib/jsonapi_compliable/util/hash.rb +14 -0
  32. data/lib/jsonapi_compliable/util/include_params.rb +7 -18
  33. data/lib/jsonapi_compliable/util/render_options.rb +25 -0
  34. data/lib/jsonapi_compliable/version.rb +1 -1
  35. data/lib/jsonapi_compliable.rb +22 -13
  36. metadata +34 -70
  37. data/gemfiles/rails_3.gemfile +0 -9
  38. data/lib/jsonapi_compliable/dsl.rb +0 -90
  39. data/lib/jsonapi_compliable/scope/extra_fields.rb +0 -35
  40. data/lib/jsonapi_compliable/scope/sideload.rb +0 -25
  41. data/lib/jsonapi_compliable/scope/sort.rb +0 -29
  42. data/lib/jsonapi_compliable/util/pagination.rb +0 -11
  43. data/lib/jsonapi_compliable/util/scoping.rb +0 -20
@@ -1,5 +1,5 @@
1
1
  module JsonapiCompliable
2
- module Scope::Filterable
2
+ module Scoping::Filterable
3
3
  def find_filter(name)
4
4
  find_filter!(name)
5
5
  rescue JsonapiCompliable::Errors::BadFilter
@@ -8,16 +8,16 @@ module JsonapiCompliable
8
8
 
9
9
  def find_filter!(name)
10
10
  filter_name, filter_value = \
11
- dsl.filters.find { |_name, opts| opts[:aliases].include?(name.to_sym) }
11
+ resource.filters.find { |_name, opts| opts[:aliases].include?(name.to_sym) }
12
12
  raise JsonapiCompliable::Errors::BadFilter unless filter_name
13
13
  if guard = filter_value[:if]
14
- raise JsonapiCompliable::Errors::BadFilter if controller.send(guard) == false
14
+ raise JsonapiCompliable::Errors::BadFilter if resource.context[:object].send(guard) == false
15
15
  end
16
16
  { filter_name => filter_value }
17
17
  end
18
18
 
19
19
  def filter_param
20
- params[:filter] || {}
20
+ query_hash[:filter]
21
21
  end
22
22
  end
23
23
  end
@@ -1,5 +1,5 @@
1
1
  module JsonapiCompliable
2
- class Scope::Paginate < Scope::Base
2
+ class Scoping::Paginate < Scoping::Base
3
3
  MAX_PAGE_SIZE = 1_000
4
4
 
5
5
  def apply
@@ -12,11 +12,11 @@ module JsonapiCompliable
12
12
  end
13
13
 
14
14
  def custom_scope
15
- dsl.pagination
15
+ resource.pagination
16
16
  end
17
17
 
18
18
  def apply_standard_scope
19
- @scope.page(number).per(size)
19
+ resource.adapter.paginate(@scope, number, size)
20
20
  end
21
21
 
22
22
  def apply_custom_scope
@@ -26,15 +26,15 @@ module JsonapiCompliable
26
26
  private
27
27
 
28
28
  def page_param
29
- @page_param ||= (params[:page] || {})
29
+ @page_param ||= (query_hash[:page] || {})
30
30
  end
31
31
 
32
32
  def number
33
- (page_param[:number] || controller.default_page_number).to_i
33
+ (page_param[:number] || resource.default_page_number).to_i
34
34
  end
35
35
 
36
36
  def size
37
- (page_param[:size] || controller.default_page_size).to_i
37
+ (page_param[:size] || resource.default_page_size).to_i
38
38
  end
39
39
  end
40
40
  end
@@ -0,0 +1,33 @@
1
+ module JsonapiCompliable
2
+ class Scoping::Sort < Scoping::Base
3
+ def custom_scope
4
+ resource.sorting
5
+ end
6
+
7
+ def apply_standard_scope
8
+ each_sort do |attribute, direction|
9
+ @scope = resource.adapter.order(@scope, attribute, direction)
10
+ end
11
+ @scope
12
+ end
13
+
14
+ def apply_custom_scope
15
+ each_sort do |attribute, direction|
16
+ @scope = custom_scope.call(@scope, attribute, direction)
17
+ end
18
+ @scope
19
+ end
20
+
21
+ private
22
+
23
+ def each_sort
24
+ sort_param.each do |sort_hash|
25
+ yield sort_hash.keys.first, sort_hash.values.first
26
+ end
27
+ end
28
+
29
+ def sort_param
30
+ @sort_param ||= query_hash[:sort].empty? ? resource.default_sort : query_hash[:sort]
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,95 @@
1
+ module JsonapiCompliable
2
+ class Sideload
3
+ attr_reader :name,
4
+ :resource,
5
+ :polymorphic,
6
+ :sideloads,
7
+ :scope_proc,
8
+ :assign_proc,
9
+ :grouper
10
+
11
+ def initialize(name, opts)
12
+ @name = name
13
+ @resource = (opts[:resource] || Class.new(Resource)).new
14
+ @sideloads = {}
15
+ @polymorphic = !!opts[:polymorphic]
16
+ @polymorphic_groups = {} if polymorphic?
17
+
18
+ extend @resource.adapter.sideloading_module
19
+ end
20
+
21
+ def polymorphic?
22
+ @polymorphic == true
23
+ end
24
+
25
+ def scope(&blk)
26
+ @scope_proc = blk
27
+ end
28
+
29
+ def assign(&blk)
30
+ @assign_proc = blk
31
+ end
32
+
33
+ def group_by(&grouper)
34
+ @grouper = grouper
35
+ end
36
+
37
+ def resolve(parents, query, namespace = nil)
38
+ namespace ||= name
39
+
40
+ if polymorphic?
41
+ resolve_polymorphic(parents, query)
42
+ else
43
+ resolve_basic(parents, query, namespace)
44
+ end
45
+ end
46
+
47
+ def allow_sideload(name, opts = {}, &blk)
48
+ sideload = Sideload.new(name, opts)
49
+ sideload.instance_eval(&blk) if blk
50
+
51
+ if polymorphic?
52
+ @polymorphic_groups[name] = sideload
53
+ else
54
+ @sideloads[name] = sideload
55
+ end
56
+ end
57
+
58
+ def sideload(name)
59
+ @sideloads[name]
60
+ end
61
+
62
+ # Grab from nested sideloads, AND resource, recursively
63
+ def to_hash
64
+ { name => {} }.tap do |hash|
65
+ @sideloads.each_pair do |key, sideload|
66
+ hash[name][key] = sideload.to_hash[key]
67
+
68
+ if sideloading = sideload.resource.sideloading
69
+ sideloading.sideloads.each_pair do |k, s|
70
+ hash[name][k] = s.to_hash[k]
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+
77
+ private
78
+
79
+ def resolve_polymorphic(parents, query)
80
+ parents.group_by(&@grouper).each_pair do |group_type, group_members|
81
+ sideload_for_group = @polymorphic_groups[group_type]
82
+ if sideload_for_group
83
+ sideload_for_group.resolve(group_members, query, name)
84
+ end
85
+ end
86
+ end
87
+
88
+ def resolve_basic(parents, query, namespace)
89
+ sideload_scope = scope_proc.call(parents)
90
+ sideload_scope = Scope.new(sideload_scope, resource, query, namespace: namespace)
91
+ sideload_results = sideload_scope.resolve
92
+ assign_proc.call(parents, sideload_results)
93
+ end
94
+ end
95
+ end
@@ -3,19 +3,10 @@ module JsonapiCompliable
3
3
  class DSL
4
4
  attr_reader :name, :calculations
5
5
 
6
- def self.defaults
7
- {
8
- count: ->(scope, attr) { scope.count },
9
- average: ->(scope, attr) { scope.average(attr).to_f },
10
- sum: ->(scope, attr) { scope.sum(attr) },
11
- maximum: ->(scope, attr) { scope.maximum(attr) },
12
- minimum: ->(scope, attr) { scope.minimum(attr) }
13
- }
14
- end
15
-
16
- def initialize(config)
6
+ def initialize(adapter, config)
17
7
  config = { config => [] } if config.is_a?(Symbol)
18
8
 
9
+ @adapter = adapter
19
10
  @calculations = {}
20
11
  @name = config.keys.first
21
12
  Array(config.values.first).each { |c| send(:"#{c}!") }
@@ -31,23 +22,23 @@ module JsonapiCompliable
31
22
  end
32
23
 
33
24
  def count!
34
- @calculations[:count] = self.class.defaults[:count]
25
+ @calculations[:count] = @adapter.method(:count)
35
26
  end
36
27
 
37
28
  def sum!
38
- @calculations[:sum] = self.class.defaults[:sum]
29
+ @calculations[:sum] = @adapter.method(:sum)
39
30
  end
40
31
 
41
32
  def average!
42
- @calculations[:average] = self.class.defaults[:average]
33
+ @calculations[:average] = @adapter.method(:average)
43
34
  end
44
35
 
45
36
  def maximum!
46
- @calculations[:maximum] = self.class.defaults[:maximum]
37
+ @calculations[:maximum] = @adapter.method(:maximum)
47
38
  end
48
39
 
49
40
  def minimum!
50
- @calculations[:minimum] = self.class.defaults[:minimum]
41
+ @calculations[:minimum] = @adapter.method(:minimum)
51
42
  end
52
43
  end
53
44
  end
@@ -1,18 +1,18 @@
1
1
  module JsonapiCompliable
2
2
  module Stats
3
3
  class Payload
4
- def initialize(controller, scope)
5
- @dsl = controller._jsonapi_compliable
6
- @directive = controller.params[:stats]
7
- @scope = controller._jsonapi_scope || scope
4
+ def initialize(dsl, query_hash, scope)
5
+ @dsl = dsl
6
+ @query_hash = query_hash[:stats]
7
+ @scope = scope
8
8
  end
9
9
 
10
10
  def generate
11
11
  {}.tap do |stats|
12
- @directive.each_pair do |name, calculation|
12
+ @query_hash.each_pair do |name, calculation|
13
13
  stats[name] = {}
14
14
 
15
- each_calculation(name, parse_calculation(calculation)) do |calc, function|
15
+ each_calculation(name, calculation) do |calc, function|
16
16
  stats[name][calc] = function.call(@scope, name)
17
17
  end
18
18
  end
@@ -27,14 +27,6 @@ module JsonapiCompliable
27
27
  yield calc, function
28
28
  end
29
29
  end
30
-
31
- def parse_calculation(calculation)
32
- if calculation.is_a?(String)
33
- calculation.split(',').map(&:to_sym)
34
- else
35
- calculation.map(&:to_sym)
36
- end
37
- end
38
30
  end
39
31
  end
40
32
  end
@@ -1,17 +1,15 @@
1
1
  module JsonapiCompliable
2
2
  module Util
3
3
  class FieldParams
4
- def self.parse!(params, name)
5
- return unless params[name]
4
+ def self.parse(params)
5
+ return {} if params.nil?
6
6
 
7
- params[name].each_pair do |key, value|
8
- params[name][key] = value.split(',').map(&:to_sym)
7
+ {}.tap do |parsed|
8
+ params.each_pair do |key, value|
9
+ parsed[key.to_sym] = value.split(',').map(&:to_sym)
10
+ end
9
11
  end
10
12
  end
11
-
12
- def self.fieldset(params, name)
13
- params[name].to_unsafe_hash.deep_symbolize_keys
14
- end
15
13
  end
16
14
  end
17
15
  end
@@ -0,0 +1,14 @@
1
+ module JsonapiCompliable
2
+ module Util
3
+ class Hash
4
+ def self.keys(hash, collection = [])
5
+ hash.each_pair do |key, value|
6
+ collection << key
7
+ keys(value, collection)
8
+ end
9
+
10
+ collection
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,28 +1,17 @@
1
1
  module JsonapiCompliable
2
2
  module Util
3
3
  class IncludeParams
4
- def self.compare(includes, whitelist)
5
- {}.tap do |valid|
6
- includes.to_hash.each_pair do |key, sub_hash|
7
- if whitelist[key]
8
- valid[key] = compare(sub_hash, whitelist[key])
4
+ class << self
5
+ def scrub(requested_includes, allowed_includes)
6
+ {}.tap do |valid|
7
+ requested_includes.each_pair do |key, sub_hash|
8
+ if allowed_includes[key]
9
+ valid[key] = scrub(sub_hash, allowed_includes[key])
10
+ end
9
11
  end
10
12
  end
11
13
  end
12
14
  end
13
-
14
- def self.scrub(controller)
15
- dsl = controller._jsonapi_compliable
16
- whitelist = dsl.sideloads[:whitelist] || {}
17
- whitelist = whitelist[controller.action_name]
18
- includes = JSONAPI::IncludeDirective.new(controller.params[:include])
19
-
20
- if whitelist
21
- Util::IncludeParams.compare(includes, whitelist)
22
- else
23
- {}
24
- end
25
- end
26
15
  end
27
16
  end
28
17
  end
@@ -0,0 +1,25 @@
1
+ module JsonapiCompliable
2
+ module Util
3
+ class RenderOptions
4
+ def self.generate(object, query_hash, overrides = {})
5
+ resolved = object.respond_to?(:resolve) ? object.resolve : object
6
+
7
+ options = {}
8
+ options[:include] = query_hash[:include]
9
+ options[:jsonapi] = resolved
10
+ options[:fields] = query_hash[:fields]
11
+ options.merge!(overrides)
12
+ options[:meta] ||= {}
13
+ options[:expose] ||= {}
14
+ options[:expose][:extra_fields] = query_hash[:extra_fields]
15
+
16
+ if object.respond_to?(:resolve_stats)
17
+ stats = object.resolve_stats
18
+ options[:meta][:stats] = stats unless stats.empty?
19
+ end
20
+
21
+ options
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,3 +1,3 @@
1
1
  module JsonapiCompliable
2
- VERSION = "0.4.0"
2
+ VERSION = "0.5.1"
3
3
  end
@@ -1,22 +1,31 @@
1
- require 'jsonapi/rails'
2
-
3
1
  require "jsonapi_compliable/version"
4
2
  require "jsonapi_compliable/errors"
5
- require "jsonapi_compliable/dsl"
6
- require "jsonapi_compliable/scope/base"
7
- require "jsonapi_compliable/scope/sort"
8
- require "jsonapi_compliable/scope/paginate"
9
- require "jsonapi_compliable/scope/sideload"
10
- require "jsonapi_compliable/scope/extra_fields"
11
- require "jsonapi_compliable/scope/filterable"
12
- require "jsonapi_compliable/scope/default_filter"
13
- require "jsonapi_compliable/scope/filter"
3
+ require "jsonapi_compliable/resource"
4
+ require "jsonapi_compliable/query"
5
+ require "jsonapi_compliable/sideload"
6
+ require "jsonapi_compliable/scope"
7
+ require "jsonapi_compliable/scoping/base"
8
+ require "jsonapi_compliable/scoping/sort"
9
+ require "jsonapi_compliable/scoping/paginate"
10
+ require "jsonapi_compliable/scoping/extra_fields"
11
+ require "jsonapi_compliable/scoping/filterable"
12
+ require "jsonapi_compliable/scoping/default_filter"
13
+ require "jsonapi_compliable/scoping/filter"
14
+ require "jsonapi_compliable/util/render_options"
15
+ require "jsonapi_compliable/adapters/abstract"
14
16
  require "jsonapi_compliable/stats/dsl"
15
17
  require "jsonapi_compliable/stats/payload"
16
18
  require "jsonapi_compliable/util/include_params"
17
19
  require "jsonapi_compliable/util/field_params"
18
- require "jsonapi_compliable/util/scoping"
19
- require "jsonapi_compliable/util/pagination"
20
+ require "jsonapi_compliable/util/hash"
21
+
22
+ # require correct jsonapi-rb before extensions
23
+ if defined?(Rails)
24
+ require 'jsonapi_compliable/rails'
25
+ else
26
+ require 'jsonapi/serializable'
27
+ end
28
+
20
29
  require "jsonapi_compliable/extensions/extra_attribute"
21
30
  require "jsonapi_compliable/extensions/boolean_attribute"
22
31
 
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.4.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Richmond
@@ -9,30 +9,10 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2016-12-09 00:00:00.000000000 Z
12
+ date: 2017-02-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rails
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - ">="
19
- - !ruby/object:Gem::Version
20
- version: '4.1'
21
- - - "<"
22
- - !ruby/object:Gem::Version
23
- version: '6'
24
- type: :runtime
25
- prerelease: false
26
- version_requirements: !ruby/object:Gem::Requirement
27
- requirements:
28
- - - ">="
29
- - !ruby/object:Gem::Version
30
- version: '4.1'
31
- - - "<"
32
- - !ruby/object:Gem::Version
33
- version: '6'
34
- - !ruby/object:Gem::Dependency
35
- name: jsonapi-rails
15
+ name: jsonapi-serializable
36
16
  requirement: !ruby/object:Gem::Requirement
37
17
  requirements:
38
18
  - - "~>"
@@ -46,47 +26,39 @@ dependencies:
46
26
  - !ruby/object:Gem::Version
47
27
  version: '0.1'
48
28
  - !ruby/object:Gem::Dependency
49
- name: kaminari
29
+ name: activerecord
50
30
  requirement: !ruby/object:Gem::Requirement
51
31
  requirements:
52
32
  - - ">="
53
33
  - !ruby/object:Gem::Version
54
- version: '0'
55
- type: :development
56
- prerelease: false
57
- version_requirements: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- - !ruby/object:Gem::Dependency
63
- name: active_model_serializers
64
- requirement: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
34
+ version: '4.1'
35
+ - - "<"
67
36
  - !ruby/object:Gem::Version
68
- version: '0'
37
+ version: '6'
69
38
  type: :development
70
39
  prerelease: false
71
40
  version_requirements: !ruby/object:Gem::Requirement
72
41
  requirements:
73
42
  - - ">="
74
43
  - !ruby/object:Gem::Version
75
- version: '0'
44
+ version: '4.1'
45
+ - - "<"
46
+ - !ruby/object:Gem::Version
47
+ version: '6'
76
48
  - !ruby/object:Gem::Dependency
77
- name: jsonapi_spec_helpers
49
+ name: kaminari
78
50
  requirement: !ruby/object:Gem::Requirement
79
51
  requirements:
80
- - - ">="
52
+ - - "~>"
81
53
  - !ruby/object:Gem::Version
82
- version: '0'
54
+ version: '0.17'
83
55
  type: :development
84
56
  prerelease: false
85
57
  version_requirements: !ruby/object:Gem::Requirement
86
58
  requirements:
87
- - - ">="
59
+ - - "~>"
88
60
  - !ruby/object:Gem::Version
89
- version: '0'
61
+ version: '0.17'
90
62
  - !ruby/object:Gem::Dependency
91
63
  name: bundler
92
64
  requirement: !ruby/object:Gem::Requirement
@@ -115,20 +87,6 @@ dependencies:
115
87
  - - "~>"
116
88
  - !ruby/object:Gem::Version
117
89
  version: '10.0'
118
- - !ruby/object:Gem::Dependency
119
- name: rspec-rails
120
- requirement: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- type: :development
126
- prerelease: false
127
- version_requirements: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
90
  - !ruby/object:Gem::Dependency
133
91
  name: sqlite3
134
92
  requirement: !ruby/object:Gem::Requirement
@@ -180,33 +138,39 @@ files:
180
138
  - bin/console
181
139
  - bin/rspec
182
140
  - bin/setup
183
- - gemfiles/rails_3.gemfile
184
141
  - gemfiles/rails_4.gemfile
185
142
  - gemfiles/rails_4.gemfile.lock
186
143
  - gemfiles/rails_5.gemfile
187
144
  - gemfiles/rails_5.gemfile.lock
188
145
  - jsonapi_compliable.gemspec
189
146
  - lib/jsonapi_compliable.rb
147
+ - lib/jsonapi_compliable/adapters/abstract.rb
148
+ - lib/jsonapi_compliable/adapters/active_record.rb
149
+ - lib/jsonapi_compliable/adapters/active_record_sideloading.rb
150
+ - lib/jsonapi_compliable/adapters/null.rb
190
151
  - lib/jsonapi_compliable/base.rb
191
152
  - lib/jsonapi_compliable/deserializable.rb
192
- - lib/jsonapi_compliable/dsl.rb
193
153
  - lib/jsonapi_compliable/errors.rb
194
154
  - lib/jsonapi_compliable/extensions/boolean_attribute.rb
195
155
  - lib/jsonapi_compliable/extensions/extra_attribute.rb
196
- - lib/jsonapi_compliable/scope/base.rb
197
- - lib/jsonapi_compliable/scope/default_filter.rb
198
- - lib/jsonapi_compliable/scope/extra_fields.rb
199
- - lib/jsonapi_compliable/scope/filter.rb
200
- - lib/jsonapi_compliable/scope/filterable.rb
201
- - lib/jsonapi_compliable/scope/paginate.rb
202
- - lib/jsonapi_compliable/scope/sideload.rb
203
- - lib/jsonapi_compliable/scope/sort.rb
156
+ - lib/jsonapi_compliable/query.rb
157
+ - lib/jsonapi_compliable/rails.rb
158
+ - lib/jsonapi_compliable/resource.rb
159
+ - lib/jsonapi_compliable/scope.rb
160
+ - lib/jsonapi_compliable/scoping/base.rb
161
+ - lib/jsonapi_compliable/scoping/default_filter.rb
162
+ - lib/jsonapi_compliable/scoping/extra_fields.rb
163
+ - lib/jsonapi_compliable/scoping/filter.rb
164
+ - lib/jsonapi_compliable/scoping/filterable.rb
165
+ - lib/jsonapi_compliable/scoping/paginate.rb
166
+ - lib/jsonapi_compliable/scoping/sort.rb
167
+ - lib/jsonapi_compliable/sideload.rb
204
168
  - lib/jsonapi_compliable/stats/dsl.rb
205
169
  - lib/jsonapi_compliable/stats/payload.rb
206
170
  - lib/jsonapi_compliable/util/field_params.rb
171
+ - lib/jsonapi_compliable/util/hash.rb
207
172
  - lib/jsonapi_compliable/util/include_params.rb
208
- - lib/jsonapi_compliable/util/pagination.rb
209
- - lib/jsonapi_compliable/util/scoping.rb
173
+ - lib/jsonapi_compliable/util/render_options.rb
210
174
  - lib/jsonapi_compliable/version.rb
211
175
  homepage:
212
176
  licenses:
@@ -1,9 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "http://artprod.dev.bloomberg.com/artifactory/api/gems/rubygems/"
4
-
5
- gem "appraisal"
6
- gem "active_model_serializers", :git => "https://github.com/richmolj/active_model_serializers.git"
7
- gem "rails", "~> 3.2"
8
-
9
- gemspec :path => "../"