jsonapi.rb 1.5.3 → 1.5.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ada833bf92141ef124841656c8ed8ab81e3e2182
4
- data.tar.gz: adcfac804515d2f80555da0fe40c3053ae3385b1
3
+ metadata.gz: ce5daf22693b0777f1b67f93bc48dbccb8cb4a89
4
+ data.tar.gz: a5b95311a3e72423e9fef13ae99d3b633f3e422a
5
5
  SHA512:
6
- metadata.gz: 300c9fc6b96a53788fdeecc9dbdec7681cddd3b0cbcc7073b2c746c42399e0d482599c9f48aff3cdd9222f6a950b3b3e4bba2f70c25023cfe0a15732b3448d73
7
- data.tar.gz: 8e64ded16322af2fd49e471f641f84f735532fa39282b0859cb263367d52f3f7d4fcf961fa2a2e1e233ddff4acc29f7138add8eb78daab8ebaeeff5aef135ef4
6
+ metadata.gz: 602f3479f219e02ab609979915b119f896a43f6e930be2fd62fa920ebfb2bf51ee0b8fe0524898ea4ea0aff14aa702079f105f13dbd68f0fa52db64b165cef91
7
+ data.tar.gz: ef99951e92c6b5d8003dffa7e414d0df71ac279c57816bd6105be2a6bb9d6f44d0be1db55f1937ea3287bf65f8619e9eb8cc35499053f0f0b75aa3c10ef9b9c6
@@ -0,0 +1,16 @@
1
+ ## Expected Behavior
2
+
3
+
4
+ ## Actual Behavior
5
+
6
+
7
+ ## Steps to Reproduce the Problem
8
+
9
+ 1.
10
+ 2.
11
+ 3.
12
+
13
+ ## Specifications
14
+
15
+ - Version:
16
+ - Ruby version:
@@ -0,0 +1,17 @@
1
+ ## What is the current behavior?
2
+
3
+ <!-- Please describe the current behavior that you are modifying, or link to a
4
+ relevant issue. -->
5
+
6
+ ## What is the new behavior?
7
+
8
+ <!-- Please describe the behavior or changes that are being added here. -->
9
+
10
+ ## Checklist
11
+
12
+ Please make sure the following requirements are complete:
13
+
14
+ - [ ] Tests for the changes have been added (for bug fixes / features)
15
+ - [ ] Docs have been reviewed and added / updated if needed (for bug fixes /
16
+ features)
17
+ - [ ] All automated checks pass (CI/CD)
@@ -0,0 +1,34 @@
1
+ name: CI
2
+
3
+ on: [push]
4
+
5
+ jobs:
6
+ ruby_rails_test_matrix:
7
+ runs-on: ubuntu-18.04
8
+
9
+ strategy:
10
+ matrix:
11
+ ruby: [2.4, 2.6]
12
+ rails: [4, 5, 6]
13
+ exclude:
14
+ - ruby: 2.4
15
+ rails: 6
16
+
17
+ steps:
18
+ - uses: actions/checkout@master
19
+
20
+ - name: Sets up the environment
21
+ uses: actions/setup-ruby@v1
22
+ with:
23
+ ruby-version: ${{ matrix.ruby }}
24
+
25
+ - name: Runs code QA and tests
26
+ env:
27
+ RAILS_VERSION: ~> ${{ matrix.rails }}
28
+ run: |
29
+ rm -rf Gemfile.lock
30
+ sudo apt-get install libsqlite3-dev
31
+ gem install bundler -v '~> 1'
32
+ echo $RAILS_VERSION | grep -q '4' && export SQLITE3_VERSION='~> 1.3.6'
33
+ bundle
34
+ rake
data/.gitignore CHANGED
@@ -1,2 +1,3 @@
1
1
  coverage
2
2
  pkg
3
+ Gemfile.lock
data/.rubocop.yml CHANGED
@@ -17,7 +17,7 @@ Style/StringLiterals:
17
17
  Style/FrozenStringLiteralComment:
18
18
  Enabled: false
19
19
 
20
- Metrics/LineLength:
20
+ Layout/LineLength:
21
21
  Max: 80
22
22
 
23
23
  Layout/IndentationConsistency:
@@ -25,3 +25,12 @@ Layout/IndentationConsistency:
25
25
 
26
26
  Style/BlockDelimiters:
27
27
  Enabled: true
28
+
29
+ Rails/ApplicationRecord:
30
+ Enabled: false
31
+
32
+ Rails/BelongsTo:
33
+ Enabled: false
34
+
35
+ Rails/ApplicationController:
36
+ Enabled: false
data/Gemfile CHANGED
@@ -3,4 +3,4 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in jsonapi.gemspec
4
4
  gemspec
5
5
 
6
- gem 'jsonapi-rspec', git: 'https://github.com/stas/jsonapi-rspec.git'
6
+ gem 'jsonapi-rspec', git: 'https://github.com/jsonapi-rb/jsonapi-rspec.git'
data/README.md CHANGED
@@ -320,7 +320,7 @@ class MyController < ActionController::Base
320
320
  def update
321
321
  model = MyModel.find(params[:id])
322
322
 
323
- if model.update(jsonapi_deserialize(only: [:attr1, :rel_one]))
323
+ if model.update(jsonapi_deserialize(params, only: [:attr1, :rel_one]))
324
324
  render jsonapi: model
325
325
  else
326
326
  render jsonapi_errors: model.errors, status: :unprocessable_entity
@@ -336,6 +336,12 @@ The `jsonapi_deserialize` helper accepts the following options:
336
336
  * `polymorphic`: will add and detect the `_type` attribute and class to the
337
337
  defined list of polymorphic relationships
338
338
 
339
+ This functionality requires support for _inflections_. If your project uses
340
+ `active_support` or `rails` you don't need to do anything. Alternatively, we will
341
+ try to load a lightweight alternative to `active_support/inflector` provided
342
+ by the `dry/inflector` gem, please make sure it's added if you want to benefit
343
+ from this feature.
344
+
339
345
  ## Development
340
346
 
341
347
  After checking out the repo, run `bundle` to install dependencies.
data/Rakefile CHANGED
@@ -4,14 +4,6 @@ require 'rubocop/rake_task'
4
4
  require 'yaml'
5
5
  require 'yardstick'
6
6
 
7
- # TODO: Remove once merged...
8
- # https://github.com/toshimaru/rubocop-rails_config/pull/43
9
- require 'rubocop'
10
- module RuboCop
11
- Config::OBSOLETE_COPS = Config::OBSOLETE_COPS.dup
12
- Config::OBSOLETE_COPS.delete('Layout/FirstParameterIndentation')
13
- end
14
-
15
7
  desc('Documentation stats and measurements')
16
8
  task('qa:docs') do
17
9
  yaml = YAML.load_file(File.expand_path('../.yardstick.yml', __FILE__))
data/jsonapi.rb.gemspec CHANGED
@@ -34,6 +34,7 @@ Gem::Specification.new do |spec|
34
34
  spec.add_development_dependency 'jsonapi-rspec'
35
35
  spec.add_development_dependency 'yardstick'
36
36
  spec.add_development_dependency 'rubocop-rails_config'
37
+ spec.add_development_dependency 'rubocop'
37
38
  spec.add_development_dependency 'simplecov'
38
39
  spec.add_development_dependency 'rubocop-performance'
39
40
  end
@@ -1,4 +1,12 @@
1
- require 'active_support/inflector'
1
+ begin
2
+ require 'active_support/inflector'
3
+ rescue LoadError
4
+ warn(
5
+ 'Trying to load `dry-inflector` as an ' \
6
+ 'alternative to `active_support/inflector`...'
7
+ )
8
+ require 'dry/inflector'
9
+ end
2
10
 
3
11
  module JSONAPI
4
12
  # Helpers to transform a JSON API document, containing a single data object,
@@ -7,6 +15,14 @@ module JSONAPI
7
15
  # Initial version from the `active_model_serializers` support for JSONAPI.
8
16
  module Deserialization
9
17
  private
18
+ # Helper method to pick an available inflector implementation
19
+ #
20
+ # @return [Object]
21
+ def jsonapi_inflector
22
+ ActiveSupport::Inflector
23
+ rescue
24
+ Dry::Inflector.new
25
+ end
10
26
 
11
27
  # Returns a transformed dictionary following [ActiveRecord::Base] specs
12
28
  #
@@ -17,7 +33,8 @@ module JSONAPI
17
33
  # polymorphic: Array of symbols of polymorphic fields.
18
34
  # @return [Hash]
19
35
  def jsonapi_deserialize(document, options = {})
20
- if document.is_a?(ActionController::Parameters)
36
+ if document.respond_to?(:permit!)
37
+ # Handle Rails params...
21
38
  primary_data = document.dup.require(:data).permit!.as_json
22
39
  elsif document.is_a?(Hash)
23
40
  primary_data = (document.as_json['data'] || {}).deep_dup
@@ -45,7 +62,7 @@ module JSONAPI
45
62
 
46
63
  relationships.map do |assoc_name, assoc_data|
47
64
  assoc_data = (assoc_data || {})['data'] || {}
48
- rel_name = ActiveSupport::Inflector.singularize(assoc_name)
65
+ rel_name = jsonapi_inflector.singularize(assoc_name)
49
66
 
50
67
  if assoc_data.is_a?(Array)
51
68
  parsed["#{rel_name}_ids"] = assoc_data.map { |ri| ri['id'] }.compact
@@ -55,7 +72,7 @@ module JSONAPI
55
72
  parsed["#{rel_name}_id"] = assoc_data['id']
56
73
 
57
74
  if (options['polymorphic'] || []).include?(assoc_name)
58
- rel_type = ActiveSupport::Inflector.classify(assoc_data['type'].to_s)
75
+ rel_type = jsonapi_inflector.classify(assoc_data['type'].to_s)
59
76
  parsed["#{rel_name}_type"] = rel_type
60
77
  end
61
78
  end
@@ -1,5 +1,4 @@
1
1
  require 'rack/utils'
2
- require 'active_support/concern'
3
2
 
4
3
  module JSONAPI
5
4
  # Helpers to handle some error responses
@@ -7,19 +6,29 @@ module JSONAPI
7
6
  # Most of the exceptions are handled in Rails by [ActionDispatch] middleware
8
7
  # See: https://api.rubyonrails.org/classes/ActionDispatch/ExceptionWrapper.html
9
8
  module Errors
10
- extend ActiveSupport::Concern
11
-
12
- included do
13
- rescue_from StandardError, with: :render_jsonapi_internal_server_error
14
- rescue_from ActiveRecord::RecordNotFound, with: :render_jsonapi_not_found
15
- rescue_from(
16
- ActionController::ParameterMissing,
17
- with: :render_jsonapi_unprocessable_entity
18
- )
9
+ # Callback will register the error handlers
10
+ #
11
+ # @return [Module]
12
+ def self.included(base)
13
+ base.class_eval do
14
+ rescue_from(
15
+ StandardError,
16
+ with: :render_jsonapi_internal_server_error
17
+ )
18
+
19
+ rescue_from(
20
+ ActiveRecord::RecordNotFound,
21
+ with: :render_jsonapi_not_found
22
+ ) if defined?(ActiveRecord::RecordNotFound)
23
+
24
+ rescue_from(
25
+ ActionController::ParameterMissing,
26
+ with: :render_jsonapi_unprocessable_entity
27
+ ) if defined?(ActionController::ParameterMissing)
28
+ end
19
29
  end
20
30
 
21
31
  private
22
-
23
32
  # Generic error handler callback
24
33
  #
25
34
  # @param exception [Exception] instance to handle
@@ -2,7 +2,6 @@ module JSONAPI
2
2
  # Inclusion and sparse fields support
3
3
  module Fetching
4
4
  private
5
-
6
5
  # Extracts and formats sparse fieldsets
7
6
  #
8
7
  # Ex.: `GET /resource?fields[relationship]=id,created_at`
@@ -11,11 +10,17 @@ module JSONAPI
11
10
  def jsonapi_fields
12
11
  return {} unless params[:fields].respond_to?(:each_pair)
13
12
 
14
- ActiveSupport::HashWithIndifferentAccess.new.tap do |h|
15
- params[:fields].each do |k, v|
16
- h[k] = v.to_s.split(',').map(&:strip).compact
17
- end
13
+ if defined?(ActiveSupport::HashWithIndifferentAccess)
14
+ extracted = ActiveSupport::HashWithIndifferentAccess.new
15
+ else
16
+ extracted = Hash.new
17
+ end
18
+
19
+ params[:fields].each do |k, v|
20
+ extracted[k] = v.to_s.split(',').map(&:strip).compact
18
21
  end
22
+
23
+ extracted
19
24
  end
20
25
 
21
26
  # Extracts and whitelists allowed includes
@@ -22,7 +22,6 @@ module JSONAPI
22
22
  end
23
23
 
24
24
  private
25
-
26
25
  # Applies filtering and sorting to a set of resources if requested
27
26
  #
28
27
  # The fields follow [Ransack] specifications.
@@ -2,7 +2,6 @@ module JSONAPI
2
2
  # Pagination support
3
3
  module Pagination
4
4
  private
5
-
6
5
  # Default number of items per page.
7
6
  JSONAPI_PAGE_SIZE = 30
8
7
 
@@ -17,7 +16,10 @@ module JSONAPI
17
16
  if resources.respond_to?(:offset)
18
17
  resources = resources.offset(offset).limit(limit)
19
18
  else
20
- resources = resources[(offset)..(offset + limit)]
19
+ original_size = resources.size
20
+ resources = resources[(offset)..(offset + limit - 1)]
21
+ # Cache the original resources size to be used for pagination meta
22
+ resources.instance_variable_set(:@original_size, original_size)
21
23
  end
22
24
 
23
25
  block_given? ? yield(resources) : resources
@@ -62,7 +64,9 @@ module JSONAPI
62
64
  if resources.respond_to?(:unscope)
63
65
  total = resources.unscope(:limit, :offset).count()
64
66
  else
65
- total = resources.size
67
+ # Try to fetch the cached size first
68
+ total = resources.instance_variable_get(:@original_size)
69
+ total ||= resources.size
66
70
  end
67
71
 
68
72
  last_page = [1, (total.to_f / limit).ceil].max
@@ -37,7 +37,6 @@ Ransack::Visitor.class_eval do
37
37
  alias_method :original_visit_Ransack_Nodes_Sort, :visit_Ransack_Nodes_Sort
38
38
 
39
39
  private
40
-
41
40
  # Original method assumes sorting is done only by attributes
42
41
  def visit_Ransack_Nodes_Sort(node)
43
42
  # Try the default sorting visitor method...
@@ -61,7 +60,6 @@ Ransack::Nodes::Condition.class_eval do
61
60
  alias_method :original_format_predicate, :format_predicate
62
61
 
63
62
  private
64
-
65
63
  # Original method doesn't respect the arity of expressions
66
64
  # See: lib/ransack/adapters/active_record/ransack/nodes/condition.rb#L30-L42
67
65
  def format_predicate(attribute)
data/lib/jsonapi/rails.rb CHANGED
@@ -106,7 +106,7 @@ module JSONAPI
106
106
 
107
107
  # Checks if an object is a collection
108
108
  #
109
- # Stollen from [FastJsonapi::ObjectSerializer], instance method.
109
+ # Stolen from [FastJsonapi::ObjectSerializer], instance method.
110
110
  #
111
111
  # @param resource [Object] to check
112
112
  # @param force_is_collection [NilClass] flag to overwrite
@@ -1,3 +1,3 @@
1
1
  module JSONAPI
2
- VERSION = '1.5.3'
2
+ VERSION = '1.5.4'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsonapi.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.3
4
+ version: 1.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stas Suscov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-12 00:00:00.000000000 Z
11
+ date: 2020-01-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fast_jsonapi
@@ -178,6 +178,20 @@ dependencies:
178
178
  - - ">="
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: rubocop
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
181
195
  - !ruby/object:Gem::Dependency
182
196
  name: simplecov
183
197
  requirement: !ruby/object:Gem::Requirement
@@ -213,13 +227,14 @@ executables: []
213
227
  extensions: []
214
228
  extra_rdoc_files: []
215
229
  files:
216
- - ".github/main.workflow"
230
+ - ".github/ISSUE_TEMPLATE.md"
231
+ - ".github/PULL_REQUEST_TEMPLATE.md"
232
+ - ".github/workflows/ci.yml"
217
233
  - ".gitignore"
218
234
  - ".rspec"
219
235
  - ".rubocop.yml"
220
236
  - ".yardstick.yml"
221
237
  - Gemfile
222
- - Gemfile.lock
223
238
  - LICENSE.txt
224
239
  - README.md
225
240
  - Rakefile
@@ -1,58 +0,0 @@
1
- workflow "Tests" {
2
- on = "push"
3
- resolves = [
4
- "rspec-ruby2.3_rails4",
5
- "rspec-ruby2.6_rails4",
6
- "rspec-ruby2.6_rails5",
7
- "rspec-ruby2.6_rails6"
8
- ]
9
- }
10
-
11
- action "rspec-ruby2.3_rails4" {
12
- uses = "docker://ruby:2.3-alpine"
13
- env = {
14
- RAILS_VERSION = "~> 4"
15
- SQLITE3_VERSION = "~> 1.3.6"
16
- }
17
- args = [
18
- "sh", "-c",
19
- "apk add -U git build-base sqlite-dev && rm Gemfile.lock && bundle install && rake"
20
- ]
21
- }
22
-
23
- action "rspec-ruby2.6_rails4" {
24
- uses = "docker://ruby:2.6-alpine"
25
- needs = ["rspec-ruby2.3_rails4"]
26
- env = {
27
- RAILS_VERSION = "~> 4"
28
- SQLITE3_VERSION = "~> 1.3.6"
29
- }
30
- args = [
31
- "sh", "-c",
32
- "apk add -U git build-base sqlite-dev && rm Gemfile.lock && bundle install && rake"
33
- ]
34
- }
35
-
36
- action "rspec-ruby2.6_rails5" {
37
- uses = "docker://ruby:2.6-alpine"
38
- needs = ["rspec-ruby2.6_rails4"]
39
- env = {
40
- RAILS_VERSION = "~> 5"
41
- }
42
- args = [
43
- "sh", "-c",
44
- "apk add -U git build-base sqlite-dev && rm Gemfile.lock && bundle install && rake"
45
- ]
46
- }
47
-
48
- action "rspec-ruby2.6_rails6" {
49
- uses = "docker://ruby:2.6-alpine"
50
- needs = ["rspec-ruby2.6_rails5"]
51
- env = {
52
- RAILS_VERSION = "~> 6.0.0.rc1"
53
- }
54
- args = [
55
- "sh", "-c",
56
- "apk add -U git build-base sqlite-dev && rm Gemfile.lock && bundle install && rake"
57
- ]
58
- }
data/Gemfile.lock DELETED
@@ -1,206 +0,0 @@
1
- GIT
2
- remote: https://github.com/stas/jsonapi-rspec.git
3
- revision: f223a3d5531cf2c0ce2f90aa8dac2bae46b2d499
4
- specs:
5
- jsonapi-rspec (0.0.2)
6
- rspec-expectations
7
-
8
- PATH
9
- remote: .
10
- specs:
11
- jsonapi.rb (1.5.2)
12
- fast_jsonapi (~> 1.5)
13
- rack
14
- ransack
15
-
16
- GEM
17
- remote: https://rubygems.org/
18
- specs:
19
- actioncable (5.2.3)
20
- actionpack (= 5.2.3)
21
- nio4r (~> 2.0)
22
- websocket-driver (>= 0.6.1)
23
- actionmailer (5.2.3)
24
- actionpack (= 5.2.3)
25
- actionview (= 5.2.3)
26
- activejob (= 5.2.3)
27
- mail (~> 2.5, >= 2.5.4)
28
- rails-dom-testing (~> 2.0)
29
- actionpack (5.2.3)
30
- actionview (= 5.2.3)
31
- activesupport (= 5.2.3)
32
- rack (~> 2.0)
33
- rack-test (>= 0.6.3)
34
- rails-dom-testing (~> 2.0)
35
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
36
- actionview (5.2.3)
37
- activesupport (= 5.2.3)
38
- builder (~> 3.1)
39
- erubi (~> 1.4)
40
- rails-dom-testing (~> 2.0)
41
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
42
- activejob (5.2.3)
43
- activesupport (= 5.2.3)
44
- globalid (>= 0.3.6)
45
- activemodel (5.2.3)
46
- activesupport (= 5.2.3)
47
- activerecord (5.2.3)
48
- activemodel (= 5.2.3)
49
- activesupport (= 5.2.3)
50
- arel (>= 9.0)
51
- activestorage (5.2.3)
52
- actionpack (= 5.2.3)
53
- activerecord (= 5.2.3)
54
- marcel (~> 0.3.1)
55
- activesupport (5.2.3)
56
- concurrent-ruby (~> 1.0, >= 1.0.2)
57
- i18n (>= 0.7, < 2)
58
- minitest (~> 5.1)
59
- tzinfo (~> 1.1)
60
- arel (9.0.0)
61
- ast (2.4.0)
62
- builder (3.2.3)
63
- concurrent-ruby (1.1.5)
64
- crass (1.0.4)
65
- diff-lcs (1.3)
66
- docile (1.3.1)
67
- erubi (1.8.0)
68
- fast_jsonapi (1.5)
69
- activesupport (>= 4.2)
70
- ffaker (2.11.0)
71
- globalid (0.4.2)
72
- activesupport (>= 4.2.0)
73
- i18n (1.6.0)
74
- concurrent-ruby (~> 1.0)
75
- jaro_winkler (1.5.2)
76
- json (2.2.0)
77
- loofah (2.2.3)
78
- crass (~> 1.0.2)
79
- nokogiri (>= 1.5.9)
80
- mail (2.7.1)
81
- mini_mime (>= 0.1.1)
82
- marcel (0.3.3)
83
- mimemagic (~> 0.3.2)
84
- method_source (0.9.2)
85
- mimemagic (0.3.3)
86
- mini_mime (1.0.1)
87
- mini_portile2 (2.4.0)
88
- minitest (5.11.3)
89
- nio4r (2.3.1)
90
- nokogiri (1.10.3)
91
- mini_portile2 (~> 2.4.0)
92
- parallel (1.17.0)
93
- parser (2.6.3.0)
94
- ast (~> 2.4.0)
95
- rack (2.0.7)
96
- rack-test (1.1.0)
97
- rack (>= 1.0, < 3)
98
- rails (5.2.3)
99
- actioncable (= 5.2.3)
100
- actionmailer (= 5.2.3)
101
- actionpack (= 5.2.3)
102
- actionview (= 5.2.3)
103
- activejob (= 5.2.3)
104
- activemodel (= 5.2.3)
105
- activerecord (= 5.2.3)
106
- activestorage (= 5.2.3)
107
- activesupport (= 5.2.3)
108
- bundler (>= 1.3.0)
109
- railties (= 5.2.3)
110
- sprockets-rails (>= 2.0.0)
111
- rails-dom-testing (2.0.3)
112
- activesupport (>= 4.2.0)
113
- nokogiri (>= 1.6)
114
- rails-html-sanitizer (1.0.4)
115
- loofah (~> 2.2, >= 2.2.2)
116
- railties (5.2.3)
117
- actionpack (= 5.2.3)
118
- activesupport (= 5.2.3)
119
- method_source
120
- rake (>= 0.8.7)
121
- thor (>= 0.19.0, < 2.0)
122
- rainbow (3.0.0)
123
- rake (12.3.2)
124
- ransack (2.1.1)
125
- actionpack (>= 5.0)
126
- activerecord (>= 5.0)
127
- activesupport (>= 5.0)
128
- i18n
129
- rspec (3.8.0)
130
- rspec-core (~> 3.8.0)
131
- rspec-expectations (~> 3.8.0)
132
- rspec-mocks (~> 3.8.0)
133
- rspec-core (3.8.0)
134
- rspec-support (~> 3.8.0)
135
- rspec-expectations (3.8.3)
136
- diff-lcs (>= 1.2.0, < 2.0)
137
- rspec-support (~> 3.8.0)
138
- rspec-mocks (3.8.0)
139
- diff-lcs (>= 1.2.0, < 2.0)
140
- rspec-support (~> 3.8.0)
141
- rspec-rails (3.8.2)
142
- actionpack (>= 3.0)
143
- activesupport (>= 3.0)
144
- railties (>= 3.0)
145
- rspec-core (~> 3.8.0)
146
- rspec-expectations (~> 3.8.0)
147
- rspec-mocks (~> 3.8.0)
148
- rspec-support (~> 3.8.0)
149
- rspec-support (3.8.0)
150
- rubocop (0.68.1)
151
- jaro_winkler (~> 1.5.1)
152
- parallel (~> 1.10)
153
- parser (>= 2.5, != 2.5.1.1)
154
- rainbow (>= 2.2.2, < 4.0)
155
- ruby-progressbar (~> 1.7)
156
- unicode-display_width (>= 1.4.0, < 1.6)
157
- rubocop-performance (1.2.0)
158
- rubocop (>= 0.68.0)
159
- rubocop-rails_config (0.5.1)
160
- railties (>= 3.0)
161
- rubocop (~> 0.60)
162
- ruby-progressbar (1.10.0)
163
- simplecov (0.16.1)
164
- docile (~> 1.1)
165
- json (>= 1.8, < 3)
166
- simplecov-html (~> 0.10.0)
167
- simplecov-html (0.10.2)
168
- sprockets (3.7.2)
169
- concurrent-ruby (~> 1.0)
170
- rack (> 1, < 3)
171
- sprockets-rails (3.2.1)
172
- actionpack (>= 4.0)
173
- activesupport (>= 4.0)
174
- sprockets (>= 3.0.0)
175
- sqlite3 (1.4.1)
176
- thor (0.20.3)
177
- thread_safe (0.3.6)
178
- tzinfo (1.2.5)
179
- thread_safe (~> 0.1)
180
- unicode-display_width (1.5.0)
181
- websocket-driver (0.7.0)
182
- websocket-extensions (>= 0.1.0)
183
- websocket-extensions (0.1.3)
184
- yard (0.9.19)
185
- yardstick (0.9.9)
186
- yard (~> 0.8, >= 0.8.7.2)
187
-
188
- PLATFORMS
189
- ruby
190
-
191
- DEPENDENCIES
192
- bundler
193
- ffaker
194
- jsonapi-rspec!
195
- jsonapi.rb!
196
- rails
197
- rspec (~> 3.0)
198
- rspec-rails
199
- rubocop-performance
200
- rubocop-rails_config
201
- simplecov
202
- sqlite3
203
- yardstick
204
-
205
- BUNDLED WITH
206
- 1.17.3