jsonapi.rb 1.5.3 → 1.5.4

Sign up to get free protection for your applications and to get access to all the features.
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