New Upstream Release - ruby-active-model-serializers

Ready changes

Summary

Merged new upstream version: 0.10.13 (was: 0.10.12).

Resulting package

Built on 2022-12-30T06:14 (took 6m6s)

The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:

apt install -t fresh-releases ruby-active-model-serializers

Lintian Result

Diff

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..b02f6a0
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,74 @@
+---
+
+name: CI
+
+on: [push, pull_request]
+
+jobs:
+  test:
+    name: "Testing"
+    runs-on: ubuntu-18.04
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          # Recent Rubies and Rails
+          - ruby-version: '3.1'
+            rails-version: '7.0'
+          - ruby-version: '3.0'
+            rails-version: '7.0'
+          - ruby-version: '2.7'
+            rails-version: '7.0'
+          - ruby-version: '2.6'
+            rails-version: '6.1'
+          - ruby-version: '2.6'
+            rails-version: '6.0'
+          - ruby-version: '2.7'
+            rails-version: '6.0'
+          - ruby-version: '2.6'
+            rails-version: '5.2'
+          # Old Rubies and Rails
+          - ruby-version: '2.5'
+            rails-version: '5.1'
+            bundler: '1'
+          - ruby-version: '2.4'
+            rails-version: '5.0'
+            bundler: '1'
+          - ruby-version: '2.4'
+            rails-version: '4.2'
+            bundler: '1'
+          # Failing with a stack trace in active support
+          # - ruby-version: '2.4'
+          #   rails-version: '4.1'
+          #   bundler: '1'
+
+    continue-on-error: "${{ endsWith(matrix.ruby-version, 'head') }}"
+
+    env:
+      CI: "1"
+
+    steps:
+      - name:                     "Checkout Code"
+        uses:                     "actions/checkout@v2"
+        timeout-minutes:          5
+        with:
+          fetch-depth:            0
+
+      - name: Install required libs
+        run: |
+          sudo apt-get -yqq install libsqlite3-dev
+
+      - name: "Build Ruby"
+        uses: ruby/setup-ruby@v1
+        with:
+          ruby-version:   "${{ matrix.ruby-version }}"
+          bundler:        "${{ matrix.bundler || 2 }}"
+          bundler-cache:  true
+        env:
+          RAILS_VERSION: ${{ matrix.rails-version }}
+
+      - name: "Run tests"
+        run: |
+          bundle exec rake
+        env:
+          RAILS_VERSION: ${{ matrix.rails-version }}
diff --git a/.simplecov b/.simplecov
deleted file mode 100644
index 955a606..0000000
--- a/.simplecov
+++ /dev/null
@@ -1,110 +0,0 @@
-# https://github.com/colszowka/simplecov#using-simplecov-for-centralized-config
-# see https://github.com/colszowka/simplecov/blob/master/lib/simplecov/defaults.rb
-# vim: set ft=ruby
-
-## DEFINE VARIABLES
-@minimum_coverage = ENV.fetch('COVERAGE_MINIMUM') {
-  case (defined?(RUBY_ENGINE) && RUBY_ENGINE) || "ruby"
-  when 'jruby', 'rbx'
-    96.0
-  else
-    98.1
-  end
-}.to_f.round(2)
-# rubocop:disable Style/DoubleNegation
-ENV['FULL_BUILD'] ||= ENV['CI']
-@running_ci       = !!(ENV['FULL_BUILD'] =~ /\Atrue\z/i)
-@generate_report  = @running_ci || !!(ENV['COVERAGE'] =~ /\Atrue\z/i)
-@output = STDOUT
-# rubocop:enable Style/DoubleNegation
-
-## CONFIGURE SIMPLECOV
-
-SimpleCov.profiles.define 'app' do
-  coverage_dir 'coverage'
-  load_profile 'test_frameworks'
-
-  add_group 'Libraries', 'lib'
-
-  add_group 'Long files' do |src_file|
-    src_file.lines.count > 100
-  end
-  class MaxLinesFilter < SimpleCov::Filter
-    def matches?(source_file)
-      source_file.lines.count < filter_argument
-    end
-  end
-  add_group 'Short files', MaxLinesFilter.new(5)
-
-  # Exclude these paths from analysis
-  add_filter '/config/'
-  add_filter '/db/'
-  add_filter 'tasks'
-  add_filter '/.bundle/'
-end
-
-## START TRACKING COVERAGE (before activating SimpleCov)
-require 'coverage'
-Coverage.start
-
-## ADD SOME CUSTOM REPORTING AT EXIT
-SimpleCov.at_exit do
-  next if $! and not ($!.kind_of? SystemExit and $!.success?)
-
-  header = "#{'*' * 20} SimpleCov Results #{'*' * 20}"
-  results = SimpleCov.result.format!.join("\n")
-  exit_message = <<-EOF
-
-#{header}
-{{RESULTS}}
-{{FAILURE_MESSAGE}}
-
-#{'*' * header.size}
-  EOF
-  percent = Float(SimpleCov.result.covered_percent)
-  if percent < @minimum_coverage
-    failure_message = <<-EOF
-Spec coverage was not high enough: #{percent.round(2)}% is < #{@minimum_coverage}%
-    EOF
-    exit_message.sub!('{{RESULTS}}', results).sub!('{{FAILURE_MESSAGE}}', failure_message)
-    @output.puts exit_message
-    abort(failure_message) if @generate_report
-  elsif @running_ci
-    exit_message.sub!('{{RESULTS}}', results).sub!('{{FAILURE_MESSAGE}}', <<-EOF)
-Nice job! Spec coverage (#{percent.round(2)}%) is still at or above #{@minimum_coverage}%
-    EOF
-    @output.puts exit_message
-  end
-end
-
-## CAPTURE CONFIG IN CLOSURE 'AppCoverage.start'
-## to defer running until test/test_helper.rb is loaded.
-# rubocop:disable Style/MultilineBlockChain
-AppCoverage = Class.new do
-  def initialize(&block)
-    @block = block
-  end
-
-  def start
-    @block.call
-  end
-end.new do
-  SimpleCov.start 'app'
-  if @generate_report
-    if @running_ci
-      require 'codeclimate-test-reporter'
-      @output.puts '[COVERAGE] Running with SimpleCov Simple Formatter and CodeClimate Test Reporter'
-      formatters = [
-        SimpleCov::Formatter::SimpleFormatter,
-        CodeClimate::TestReporter::Formatter
-      ]
-    else
-      @output.puts '[COVERAGE] Running with SimpleCov HTML Formatter'
-      formatters = [SimpleCov::Formatter::HTMLFormatter]
-    end
-  else
-    formatters = []
-  end
-  SimpleCov.formatters = formatters
-end
-# rubocop:enable Style/MultilineBlockChain
diff --git a/CHANGELOG.md b/CHANGELOG.md
index bcd56b0..532a7ca 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,6 @@
 ## 0.10.x
 
-### [master (unreleased)](https://github.com/rails-api/active_model_serializers/compare/v0.10.12...0-10-stable)
+### [master (unreleased)](https://github.com/rails-api/active_model_serializers/compare/v0.10.13...0-10-stable)
 
 Breaking changes:
 
@@ -10,6 +10,12 @@ Fixes:
 
 Misc:
 
+### [v0.10.13 (2022-01013)](https://github.com/rails-api/active_model_serializers/compare/v0.10.12...v0.10.13)
+
+Fixes:
+
+- [#2399](https://github.com/rails-api/active_model_serializers/pull/2399) Handles edge case where requested current_page > total_pages (@f3z0)
+
 ### [v0.10.12 (2020-12-10)](https://github.com/rails-api/active_model_serializers/compare/v0.10.11...v0.10.12)
 
 Fixes:
diff --git a/Gemfile b/Gemfile
index 8a72bca..94c0ca4 100644
--- a/Gemfile
+++ b/Gemfile
@@ -15,7 +15,7 @@ eval_gemfile local_gemfile if File.readable?(local_gemfile)
 # Specify your gem's dependencies in active_model_serializers.gemspec
 gemspec
 
-version = ENV['RAILS_VERSION'] || '4.2'
+version = ENV['RAILS_VERSION'] || '6.1'
 
 if version == 'master'
   gem 'rack', github: 'rack/rack'
diff --git a/README.md b/README.md
index 295ed22..88033a3 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,6 @@
     <td>
       <a href="https://codeclimate.com/github/rails-api/active_model_serializers"><img src="https://codeclimate.com/github/rails-api/active_model_serializers/badges/gpa.svg" alt="Code Quality"></a>
       <a href="https://codebeat.co/projects/github-com-rails-api-active_model_serializers"><img src="https://codebeat.co/badges/a9ab35fa-8b5a-4680-9d4e-a81f9a55ebcd" alt="codebeat" ></a>
-      <a href="https://codeclimate.com/github/rails-api/active_model_serializers/coverage"><img src="https://codeclimate.com/github/rails-api/active_model_serializers/badges/coverage.svg" alt="Test Coverage"></a>
     </td>
   </tr>
   <tr>
diff --git a/Rakefile b/Rakefile
index f45d447..bb1a08d 100644
--- a/Rakefile
+++ b/Rakefile
@@ -5,10 +5,6 @@ begin
 rescue LoadError
   puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
 end
-begin
-  require 'simplecov'
-rescue LoadError # rubocop:disable Lint/HandleExceptions
-end
 import('lib/tasks/rubocop.rake')
 
 Bundler::GemHelper.install_tasks
@@ -56,13 +52,20 @@ namespace :test do
     # https://github.com/rails/rails/blob/3d590add45/railties/lib/rails/generators/app_base.rb#L345-L363
     _bundle_command = Gem.bin_path('bundler', 'bundle')
     require 'bundler'
-    Bundler.with_clean_env do
+    with_clean_env = proc do
       isolated_test_files.all? do |test_file|
         command = "-w -I#{dir}/lib -I#{dir}/test #{Shellwords.shellescape(test_file)}"
         full_command = %("#{Gem.ruby}" #{command})
         system(full_command)
       end or fail 'Failures' # rubocop:disable Style/AndOr
     end
+    bundler_method =
+      if Bundler.method_defined?(:with_unbundled_env)
+        :with_unbundled_env
+      else
+        :with_clean_env
+      end
+    Bundler.public_send(bundler_method, &with_clean_env)
   end
 end
 
diff --git a/active_model_serializers.gemspec b/active_model_serializers.gemspec
index f37f5a8..2d1855e 100644
--- a/active_model_serializers.gemspec
+++ b/active_model_serializers.gemspec
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
 
   spec.required_ruby_version = '>= 2.1'
 
-  rails_versions = ['>= 4.1', '< 6.2']
+  rails_versions = ['>= 4.1', '< 7.1']
   spec.add_runtime_dependency 'activemodel', rails_versions
   # 'activesupport', rails_versions
   # 'builder'
@@ -55,9 +55,8 @@ Gem::Specification.new do |spec|
   spec.add_development_dependency 'will_paginate', '~> 3.0', '>= 3.0.7'
 
   spec.add_development_dependency 'bundler'
-  spec.add_development_dependency 'simplecov', '>= 0.11'
   spec.add_development_dependency 'timecop', '~> 0.7'
-  spec.add_development_dependency 'grape', ['>= 0.13', '< 0.19.1']
+  spec.add_development_dependency 'grape', '>= 0.13'
   spec.add_development_dependency 'json_schema'
-  spec.add_development_dependency 'rake', ['>= 10.0', '< 13.0']
+  spec.add_development_dependency 'rake', '>= 10.0'
 end
diff --git a/debian/changelog b/debian/changelog
index dd46fd3..fb23bee 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+ruby-active-model-serializers (0.10.13-1) UNRELEASED; urgency=low
+
+  * New upstream release.
+  * Drop patch relax-rails-61-tests.patch, present upstream.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Fri, 30 Dec 2022 06:08:47 -0000
+
 ruby-active-model-serializers (0.10.12-1) unstable; urgency=medium
 
   * New upstream release.
diff --git a/debian/patches/bundler b/debian/patches/bundler
index 9131311..d4048d2 100644
--- a/debian/patches/bundler
+++ b/debian/patches/bundler
@@ -11,10 +11,10 @@ Last-Update: Fri Feb 28 22:00:11 CET 2020
  test/test_helper.rb           | 2 +-
  3 files changed, 3 insertions(+), 3 deletions(-)
 
-diff --git a/test/benchmark/app.rb b/test/benchmark/app.rb
-index cd7a41e..6aaa63e 100644
---- a/test/benchmark/app.rb
-+++ b/test/benchmark/app.rb
+Index: ruby-active-model-serializers.git/test/benchmark/app.rb
+===================================================================
+--- ruby-active-model-serializers.git.orig/test/benchmark/app.rb
++++ ruby-active-model-serializers.git/test/benchmark/app.rb
 @@ -2,7 +2,7 @@
  
  # https://github.com/rails-api/active_model_serializers/pull/872
@@ -24,10 +24,10 @@ index cd7a41e..6aaa63e 100644
  
  require 'rails'
  require 'active_model'
-diff --git a/test/support/isolated_unit.rb b/test/support/isolated_unit.rb
-index 968ae00..9cd989d 100644
---- a/test/support/isolated_unit.rb
-+++ b/test/support/isolated_unit.rb
+Index: ruby-active-model-serializers.git/test/support/isolated_unit.rb
+===================================================================
+--- ruby-active-model-serializers.git.orig/test/support/isolated_unit.rb
++++ ruby-active-model-serializers.git/test/support/isolated_unit.rb
 @@ -37,7 +37,7 @@
  #
  # It is also good to know what is the bare minimum to get
@@ -37,10 +37,10 @@ index 968ae00..9cd989d 100644
  require 'active_support'
  require 'active_support/core_ext/string/access'
  
-diff --git a/test/test_helper.rb b/test/test_helper.rb
-index e8f60cc..c4134d6 100644
---- a/test/test_helper.rb
-+++ b/test/test_helper.rb
+Index: ruby-active-model-serializers.git/test/test_helper.rb
+===================================================================
+--- ruby-active-model-serializers.git.orig/test/test_helper.rb
++++ ruby-active-model-serializers.git/test/test_helper.rb
 @@ -2,7 +2,7 @@
  
  # Configure Rails Environment
@@ -48,5 +48,5 @@ index e8f60cc..c4134d6 100644
 -require 'bundler/setup'
 +#require 'bundler/setup'
  
- begin
-   require 'simplecov'
+ require 'pry'
+ require 'timecop'
diff --git a/debian/patches/fix-tests b/debian/patches/fix-tests
index 6b6ef52..db7fae5 100644
--- a/debian/patches/fix-tests
+++ b/debian/patches/fix-tests
@@ -7,10 +7,10 @@ Bug-Debian: https://bugs.debian.org/952031
  test/active_model_serializers/adapter_for_test.rb | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
-diff --git a/test/active_model_serializers/adapter_for_test.rb b/test/active_model_serializers/adapter_for_test.rb
-index 19466db..a8a48e2 100644
---- a/test/active_model_serializers/adapter_for_test.rb
-+++ b/test/active_model_serializers/adapter_for_test.rb
+Index: ruby-active-model-serializers.git/test/active_model_serializers/adapter_for_test.rb
+===================================================================
+--- ruby-active-model-serializers.git.orig/test/active_model_serializers/adapter_for_test.rb
++++ ruby-active-model-serializers.git/test/active_model_serializers/adapter_for_test.rb
 @@ -68,7 +68,7 @@ module ActiveModelSerializers
        with_adapter_config_setup do
          ActiveModelSerializers.config.adapter = :unknown
diff --git a/debian/patches/relax-rails-61-tests.patch b/debian/patches/relax-rails-61-tests.patch
deleted file mode 100644
index c81fb4c..0000000
--- a/debian/patches/relax-rails-61-tests.patch
+++ /dev/null
@@ -1,188 +0,0 @@
-From: Benjamin Fleischer <github@benjaminfleischer.com>
-Date: Fri, 11 Dec 2020 00:19:18 -0500
-Subject: Rails 6.1 content type changed to application/json; charset=utf-8
-
-Relax tests to deal with that situation.
-
-Origin: https://github.com/rails-api/active_model_serializers/commit/fc71a327145065146f593f06bbf3e5b4aa086fc1.patch
-Forwarded: https://github.com/rails-api/active_model_serializers/pull/2403
----
- test/action_controller/explicit_serializer_test.rb |  6 ++--
- test/action_controller/serialization_test.rb       | 32 +++++++++++-----------
- 2 files changed, 19 insertions(+), 19 deletions(-)
-
-diff --git a/test/action_controller/explicit_serializer_test.rb b/test/action_controller/explicit_serializer_test.rb
-index 71df54b..2d39e7b 100644
---- a/test/action_controller/explicit_serializer_test.rb
-+++ b/test/action_controller/explicit_serializer_test.rb
-@@ -71,13 +71,13 @@ module ActionController
-       def test_render_using_explicit_serializer
-         get :render_using_explicit_serializer
- 
--        assert_equal 'application/json', @response.content_type
-+        assert_match(%r{\Aapplication/json}, @response.content_type)
-         assert_equal '{"name":"Name 1"}', @response.body
-       end
- 
-       def test_render_array_using_explicit_serializer
-         get :render_array_using_explicit_serializer
--        assert_equal 'application/json', @response.content_type
-+        assert_match(%r{\Aapplication/json}, @response.content_type)
- 
-         expected = [
-           { 'name' => 'Name 1' },
-@@ -89,7 +89,7 @@ module ActionController
- 
-       def test_render_array_using_implicit_serializer
-         get :render_array_using_implicit_serializer
--        assert_equal 'application/json', @response.content_type
-+        assert_match(%r{\Aapplication/json}, @response.content_type)
- 
-         expected = [
-           { 'name' => 'Name 1' },
-diff --git a/test/action_controller/serialization_test.rb b/test/action_controller/serialization_test.rb
-index 6e9bb45..8d360b6 100644
---- a/test/action_controller/serialization_test.rb
-+++ b/test/action_controller/serialization_test.rb
-@@ -155,7 +155,7 @@ module ActionController
-           description: 'Description 1'
-         }
- 
--        assert_equal 'application/json', @response.content_type
-+        assert_match(%r{\Aapplication/json}, @response.content_type)
-         assert_equal expected.to_json, @response.body
-       end
- 
-@@ -174,7 +174,7 @@ module ActionController
-           }
-         }
- 
--        assert_equal 'application/json', @response.content_type
-+        assert_match(%r{\Aapplication/json}, @response.content_type)
-         assert_equal expected.to_json, @response.body
-       end
- 
-@@ -183,7 +183,7 @@ module ActionController
-           get :render_array_using_custom_root
-         end
-         expected = { custom_root: [{ name: 'Name 1', description: 'Description 1' }] }
--        assert_equal 'application/json', @response.content_type
-+        assert_match(%r{\Aapplication/json}, @response.content_type)
-         assert_equal expected.to_json, @response.body
-       end
- 
-@@ -193,7 +193,7 @@ module ActionController
-         end
- 
-         expected = { custom_root: [] }
--        assert_equal 'application/json', @response.content_type
-+        assert_match(%r{\Aapplication/json}, @response.content_type)
-         assert_equal expected.to_json, @response.body
-       end
- 
-@@ -203,14 +203,14 @@ module ActionController
-         end
- 
-         expected = { custom_root: { name: 'Name 1', description: 'Description 1' } }
--        assert_equal 'application/json', @response.content_type
-+        assert_match(%r{\Aapplication/json}, @response.content_type)
-         assert_equal expected.to_json, @response.body
-       end
- 
-       def test_render_json_object_without_serializer
-         get :render_json_object_without_serializer
- 
--        assert_equal 'application/json', @response.content_type
-+        assert_match(%r{\Aapplication/json}, @response.content_type)
-         expected_body = { error: 'Result is Invalid' }
-         assert_equal expected_body.to_json, @response.body
-       end
-@@ -218,14 +218,14 @@ module ActionController
-       def test_render_json_array_object_without_serializer
-         get :render_json_array_object_without_serializer
- 
--        assert_equal 'application/json', @response.content_type
-+        assert_match(%r{\Aapplication/json}, @response.content_type)
-         expected_body = [{ error: 'Result is Invalid' }]
-         assert_equal expected_body.to_json, @response.body
-       end
- 
-       def test_render_array_using_implicit_serializer
-         get :render_array_using_implicit_serializer
--        assert_equal 'application/json', @response.content_type
-+        assert_match(%r{\Aapplication/json}, @response.content_type)
- 
-         expected = [
-           {
-@@ -261,7 +261,7 @@ module ActionController
-           }
-         }
- 
--        assert_equal 'application/json', @response.content_type
-+        assert_match(%r{\Aapplication/json}, @response.content_type)
-         assert_equal expected.to_json, @response.body
-       end
- 
-@@ -284,7 +284,7 @@ module ActionController
-           }
-         }
- 
--        assert_equal 'application/json', @response.content_type
-+        assert_match(%r{\Aapplication/json}, @response.content_type)
-         assert_equal expected.to_json, @response.body
-       end
- 
-@@ -313,7 +313,7 @@ module ActionController
-         Timecop.freeze(Time.zone.now) do
-           get :render_object_with_cache_enabled
- 
--          assert_equal 'application/json', @response.content_type
-+          assert_match(%r{\Aapplication/json}, @response.content_type)
-           assert_equal expected.to_json, @response.body
- 
-           get :render_changed_object_with_cache_enabled
-@@ -349,7 +349,7 @@ module ActionController
-           }
-         }
- 
--        assert_equal 'application/json', @response.content_type
-+        assert_match(%r{\Aapplication/json}, @response.content_type)
-         actual   = @response.body
-         expected = expected.to_json
-         if ENV['APPVEYOR'] && actual != expected
-@@ -364,7 +364,7 @@ module ActionController
-         get :render_fragment_changed_object_with_only_cache_enabled
-         response = JSON.parse(@response.body)
- 
--        assert_equal 'application/json', @response.content_type
-+        assert_match(%r{\Aapplication/json}, @response.content_type)
-         assert_equal 'ZOMG A ROLE', response['name']
-         assert_equal 'HUEHUEBRBR', response['description']
-       end
-@@ -374,7 +374,7 @@ module ActionController
-         get :render_fragment_changed_object_with_except_cache_enabled
-         response = JSON.parse(@response.body)
- 
--        assert_equal 'application/json', @response.content_type
-+        assert_match(%r{\Aapplication/json}, @response.content_type)
-         assert_equal 5, response['rating']
-         assert_equal 'lol', response['content']
-       end
-@@ -395,7 +395,7 @@ module ActionController
-             }
-           }
- 
--          assert_equal 'application/json', @response.content_type
-+          assert_match(%r{\Aapplication/json}, @response.content_type)
-           assert_equal expected_return, response
-         end
-       end
-@@ -426,7 +426,7 @@ module ActionController
- 
-         get :update_and_render_object_with_cache_enabled
- 
--        assert_equal 'application/json', @response.content_type
-+        assert_match(%r{\Aapplication/json}, @response.content_type)
-         actual   = @response.body
-         expected = expected.to_json
-         if ENV['APPVEYOR'] && actual != expected
diff --git a/debian/patches/series b/debian/patches/series
index 5eb18d5..06a285b 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,2 @@
 bundler
 fix-tests
-relax-rails-61-tests.patch
diff --git a/docs/STYLE.md b/docs/STYLE.md
index ccd75dd..236c513 100644
--- a/docs/STYLE.md
+++ b/docs/STYLE.md
@@ -18,8 +18,6 @@
 
 - [Improve code quality](https://codeclimate.com/github/rails-api/active_model_serializers/code?sort=smell_count&sort_direction=desc).
 
-- [Improve amount of code exercised by tests](https://codeclimate.com/github/rails-api/active_model_serializers/coverage?sort=covered_percent&sort_direction=asc).
-
 - [Fix RuboCop (Style) TODOS](https://github.com/rails-api/active_model_serializers/blob/master/.rubocop_todo.yml).
   - Delete and offsense, run `rake rubocop` (or possibly `rake rubocop:auto_correct`),
     and [submit a PR](CONTRIBUTING.md#submitting-a-pull-request-pr).
diff --git a/docs/general/logging.md b/docs/general/logging.md
index 321bf5d..f5c34dd 100644
--- a/docs/general/logging.md
+++ b/docs/general/logging.md
@@ -16,6 +16,5 @@ ActiveModelSerializers.logger = Logger.new(STDOUT)
 You can also disable the logger, just put this in `config/initializers/active_model_serializers.rb`:
 
 ```ruby
-require 'active_model_serializers'
-ActiveSupport::Notifications.unsubscribe(ActiveModelSerializers::Logging::RENDER_EVENT)
+ActiveModelSerializers.logger = Logger.new(IO::NULL)
 ```
diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb
index 0533fda..5e34779 100644
--- a/lib/active_model/serializer.rb
+++ b/lib/active_model/serializer.rb
@@ -146,6 +146,8 @@ module ActiveModel
     config.jsonapi_include_toplevel_object = false
     config.jsonapi_use_foreign_key_on_belongs_to_relationship = false
     config.include_data_default = true
+    # Raise ActiveModel::Serializer::CollectionSerializer::CannotInferRootKeyError when cannot infer root key from collection type
+    config.raise_cannot_infer_root_key_error = true
 
     # For configuring how serializers are found.
     # This should be an array of procs.
diff --git a/lib/active_model/serializer/collection_serializer.rb b/lib/active_model/serializer/collection_serializer.rb
index 7aae776..d60d331 100644
--- a/lib/active_model/serializer/collection_serializer.rb
+++ b/lib/active_model/serializer/collection_serializer.rb
@@ -48,8 +48,11 @@ module ActiveModel
         key ||= object.respond_to?(:name) ? object.name && object.name.underscore : nil
         # 4. key may be nil for empty collection and no serializer option
         key &&= key.pluralize
-        # 5. fail if the key cannot be determined
-        key || fail(ArgumentError, 'Cannot infer root key from collection type. Please specify the root or each_serializer option, or render a JSON String')
+        if raise_cannot_infer_root_key_error?
+          # 5. fail if the key cannot be determined
+          key || fail(CannotInferRootKeyError, 'Cannot infer root key from collection type. Please specify the root or each_serializer option, or render a JSON String')
+        end
+        key
       end
       # rubocop:enable Metrics/CyclomaticComplexity
 
@@ -60,12 +63,18 @@ module ActiveModel
           object.respond_to?(:size)
       end
 
+      class CannotInferRootKeyError < StandardError; end
+
       protected
 
       attr_reader :serializers, :options
 
       private
 
+      def raise_cannot_infer_root_key_error?
+        ActiveModelSerializers.config.raise_cannot_infer_root_key_error
+      end
+
       def serializers_from_resources
         serializer_context_class = options.fetch(:serializer_context_class, ActiveModel::Serializer)
         object.map do |resource|
diff --git a/lib/active_model/serializer/version.rb b/lib/active_model/serializer/version.rb
index c0565ca..96ba7a4 100644
--- a/lib/active_model/serializer/version.rb
+++ b/lib/active_model/serializer/version.rb
@@ -2,6 +2,6 @@
 
 module ActiveModel
   class Serializer
-    VERSION = '0.10.12'.freeze
+    VERSION = '0.10.13'.freeze
   end
 end
diff --git a/lib/active_model_serializers/adapter/json_api/pagination_links.rb b/lib/active_model_serializers/adapter/json_api/pagination_links.rb
index b4890c6..a41153a 100644
--- a/lib/active_model_serializers/adapter/json_api/pagination_links.rb
+++ b/lib/active_model_serializers/adapter/json_api/pagination_links.rb
@@ -55,11 +55,15 @@ module ActiveModelSerializers
 
         def prev_page_url
           return nil if collection.current_page == FIRST_PAGE
+          if collection.current_page > collection.total_pages
+            return url_for_page(collection.total_pages)
+          end
           url_for_page(collection.current_page - FIRST_PAGE)
         end
 
         def next_page_url
-          return nil if collection.total_pages == 0 || collection.current_page == collection.total_pages
+          return nil if collection.total_pages == 0 ||
+              collection.current_page >= collection.total_pages
           url_for_page(collection.next_page)
         end
 
diff --git a/test/action_controller/explicit_serializer_test.rb b/test/action_controller/explicit_serializer_test.rb
index 71df54b..2d39e7b 100644
--- a/test/action_controller/explicit_serializer_test.rb
+++ b/test/action_controller/explicit_serializer_test.rb
@@ -71,13 +71,13 @@ module ActionController
       def test_render_using_explicit_serializer
         get :render_using_explicit_serializer
 
-        assert_equal 'application/json', @response.content_type
+        assert_match(%r{\Aapplication/json}, @response.content_type)
         assert_equal '{"name":"Name 1"}', @response.body
       end
 
       def test_render_array_using_explicit_serializer
         get :render_array_using_explicit_serializer
-        assert_equal 'application/json', @response.content_type
+        assert_match(%r{\Aapplication/json}, @response.content_type)
 
         expected = [
           { 'name' => 'Name 1' },
@@ -89,7 +89,7 @@ module ActionController
 
       def test_render_array_using_implicit_serializer
         get :render_array_using_implicit_serializer
-        assert_equal 'application/json', @response.content_type
+        assert_match(%r{\Aapplication/json}, @response.content_type)
 
         expected = [
           { 'name' => 'Name 1' },
diff --git a/test/action_controller/serialization_test.rb b/test/action_controller/serialization_test.rb
index 6e9bb45..2286309 100644
--- a/test/action_controller/serialization_test.rb
+++ b/test/action_controller/serialization_test.rb
@@ -7,6 +7,7 @@ module ActionController
     class ImplicitSerializerTest < ActionController::TestCase
       class ImplicitSerializationTestController < ActionController::Base
         include SerializationTesting
+
         def render_using_implicit_serializer
           @profile = Profile.new(name: 'Name 1', description: 'Description 1', comments: 'Comments 1')
           render json: @profile
@@ -75,8 +76,12 @@ module ActionController
           render json: [{ error: 'Result is Invalid' }]
         end
 
+        # HACK: to prevent the resetting of instance variables after each request in Rails 7
+        # see https://github.com/rails/rails/pull/43735
+        def clear_instance_variables_between_requests; end
+
         def update_and_render_object_with_cache_enabled
-          @post.updated_at = Time.zone.now
+          @post.updated_at = Time.zone.now # requires hack above to prevent `NoMethodError: undefined method `updated_at=' for nil:NilClass`
 
           generate_cached_serializer(@post)
           render json: @post
@@ -155,7 +160,7 @@ module ActionController
           description: 'Description 1'
         }
 
-        assert_equal 'application/json', @response.content_type
+        assert_match(%r{\Aapplication/json}, @response.content_type)
         assert_equal expected.to_json, @response.body
       end
 
@@ -174,7 +179,7 @@ module ActionController
           }
         }
 
-        assert_equal 'application/json', @response.content_type
+        assert_match(%r{\Aapplication/json}, @response.content_type)
         assert_equal expected.to_json, @response.body
       end
 
@@ -183,7 +188,7 @@ module ActionController
           get :render_array_using_custom_root
         end
         expected = { custom_root: [{ name: 'Name 1', description: 'Description 1' }] }
-        assert_equal 'application/json', @response.content_type
+        assert_match(%r{\Aapplication/json}, @response.content_type)
         assert_equal expected.to_json, @response.body
       end
 
@@ -193,7 +198,7 @@ module ActionController
         end
 
         expected = { custom_root: [] }
-        assert_equal 'application/json', @response.content_type
+        assert_match(%r{\Aapplication/json}, @response.content_type)
         assert_equal expected.to_json, @response.body
       end
 
@@ -203,14 +208,14 @@ module ActionController
         end
 
         expected = { custom_root: { name: 'Name 1', description: 'Description 1' } }
-        assert_equal 'application/json', @response.content_type
+        assert_match(%r{\Aapplication/json}, @response.content_type)
         assert_equal expected.to_json, @response.body
       end
 
       def test_render_json_object_without_serializer
         get :render_json_object_without_serializer
 
-        assert_equal 'application/json', @response.content_type
+        assert_match(%r{\Aapplication/json}, @response.content_type)
         expected_body = { error: 'Result is Invalid' }
         assert_equal expected_body.to_json, @response.body
       end
@@ -218,14 +223,14 @@ module ActionController
       def test_render_json_array_object_without_serializer
         get :render_json_array_object_without_serializer
 
-        assert_equal 'application/json', @response.content_type
+        assert_match(%r{\Aapplication/json}, @response.content_type)
         expected_body = [{ error: 'Result is Invalid' }]
         assert_equal expected_body.to_json, @response.body
       end
 
       def test_render_array_using_implicit_serializer
         get :render_array_using_implicit_serializer
-        assert_equal 'application/json', @response.content_type
+        assert_match(%r{\Aapplication/json}, @response.content_type)
 
         expected = [
           {
@@ -261,7 +266,7 @@ module ActionController
           }
         }
 
-        assert_equal 'application/json', @response.content_type
+        assert_match(%r{\Aapplication/json}, @response.content_type)
         assert_equal expected.to_json, @response.body
       end
 
@@ -284,7 +289,7 @@ module ActionController
           }
         }
 
-        assert_equal 'application/json', @response.content_type
+        assert_match(%r{\Aapplication/json}, @response.content_type)
         assert_equal expected.to_json, @response.body
       end
 
@@ -313,7 +318,7 @@ module ActionController
         Timecop.freeze(Time.zone.now) do
           get :render_object_with_cache_enabled
 
-          assert_equal 'application/json', @response.content_type
+          assert_match(%r{\Aapplication/json}, @response.content_type)
           assert_equal expected.to_json, @response.body
 
           get :render_changed_object_with_cache_enabled
@@ -349,7 +354,7 @@ module ActionController
           }
         }
 
-        assert_equal 'application/json', @response.content_type
+        assert_match(%r{\Aapplication/json}, @response.content_type)
         actual   = @response.body
         expected = expected.to_json
         if ENV['APPVEYOR'] && actual != expected
@@ -364,7 +369,7 @@ module ActionController
         get :render_fragment_changed_object_with_only_cache_enabled
         response = JSON.parse(@response.body)
 
-        assert_equal 'application/json', @response.content_type
+        assert_match(%r{\Aapplication/json}, @response.content_type)
         assert_equal 'ZOMG A ROLE', response['name']
         assert_equal 'HUEHUEBRBR', response['description']
       end
@@ -374,7 +379,7 @@ module ActionController
         get :render_fragment_changed_object_with_except_cache_enabled
         response = JSON.parse(@response.body)
 
-        assert_equal 'application/json', @response.content_type
+        assert_match(%r{\Aapplication/json}, @response.content_type)
         assert_equal 5, response['rating']
         assert_equal 'lol', response['content']
       end
@@ -395,7 +400,7 @@ module ActionController
             }
           }
 
-          assert_equal 'application/json', @response.content_type
+          assert_match(%r{\Aapplication/json}, @response.content_type)
           assert_equal expected_return, response
         end
       end
@@ -426,7 +431,7 @@ module ActionController
 
         get :update_and_render_object_with_cache_enabled
 
-        assert_equal 'application/json', @response.content_type
+        assert_match(%r{\Aapplication/json}, @response.content_type)
         actual   = @response.body
         expected = expected.to_json
         if ENV['APPVEYOR'] && actual != expected
diff --git a/test/adapter/json_api/pagination_links_test.rb b/test/adapter/json_api/pagination_links_test.rb
index e8ee5ab..be1f475 100644
--- a/test/adapter/json_api/pagination_links_test.rb
+++ b/test/adapter/json_api/pagination_links_test.rb
@@ -90,6 +90,18 @@ module ActiveModelSerializers
           }
         end
 
+        def greater_than_last_page_links
+          {
+            links: {
+              self: "#{URI}?page%5Bnumber%5D=4&page%5Bsize%5D=2",
+              first: "#{URI}?page%5Bnumber%5D=1&page%5Bsize%5D=2",
+              prev: "#{URI}?page%5Bnumber%5D=3&page%5Bsize%5D=2",
+              next: nil,
+              last: "#{URI}?page%5Bnumber%5D=3&page%5Bsize%5D=2"
+            }
+          }
+        end
+
         def expected_response_when_unpaginatable
           data
         end
@@ -122,6 +134,13 @@ module ActiveModelSerializers
           end
         end
 
+        def expected_response_with_greater_than_last_page_pagination_links
+          {}.tap do |hash|
+            hash[:data] = []
+            hash.merge! greater_than_last_page_links
+          end
+        end
+
         def expected_response_with_empty_collection_pagination_links
           {}.tap do |hash|
             hash[:data] = []
@@ -141,6 +160,18 @@ module ActiveModelSerializers
           assert_equal expected_response_with_pagination_links, adapter.serializable_hash
         end
 
+        def test_pagination_links_invalid_current_page_using_kaminari
+          adapter = load_adapter(using_kaminari(4), mock_request)
+
+          assert_equal expected_response_with_greater_than_last_page_pagination_links, adapter.serializable_hash
+        end
+
+        def test_pagination_links_invalid_current_page_using_will_paginate
+          adapter = load_adapter(using_will_paginate(4), mock_request)
+
+          assert_equal expected_response_with_greater_than_last_page_pagination_links, adapter.serializable_hash
+        end
+
         def test_pagination_links_with_additional_params
           adapter = load_adapter(using_will_paginate, mock_request(test: 'test'))
 
diff --git a/test/collection_serializer_test.rb b/test/collection_serializer_test.rb
index be64915..856cbed 100644
--- a/test/collection_serializer_test.rb
+++ b/test/collection_serializer_test.rb
@@ -22,6 +22,8 @@ module ActiveModel
         type 'messages'
       end
 
+      class NonTypeSerializer < ActiveModel::Serializer; end
+
       def setup
         @singular_model = SingularModel.new
         @has_many_model = HasManyModel.new
@@ -95,18 +97,36 @@ module ActiveModel
         resource = []
         resource.define_singleton_method(:name) { nil }
         serializer = collection_serializer.new(resource)
-        assert_raise ArgumentError do
+        assert_raise ActiveModel::Serializer::CollectionSerializer::CannotInferRootKeyError do
           serializer.json_key
         end
       end
 
       def test_json_key_with_resource_without_name_and_no_serializers
         serializer = collection_serializer.new([])
-        assert_raise ArgumentError do
+        assert_raise ActiveModel::Serializer::CollectionSerializer::CannotInferRootKeyError do
           serializer.json_key
         end
       end
 
+      def test_json_key_with_empty_resources_with_non_type_serializer
+        resource = []
+        serializer = collection_serializer.new(resource, serializer: NonTypeSerializer)
+        assert_raise ActiveModel::Serializer::CollectionSerializer::CannotInferRootKeyError do
+          serializer.json_key
+        end
+      end
+
+      def test_json_key_with_empty_resources_with_non_type_serializer_when_raise_cannot_infer_root_key_error_is_false
+        previous_raise_cannot_infer_root_key_error = ActiveModelSerializers.config.raise_cannot_infer_root_key_error
+        ActiveModelSerializers.config.raise_cannot_infer_root_key_error = false
+        resource = []
+        serializer = collection_serializer.new(resource, serializer: NonTypeSerializer)
+        assert_nil serializer.json_key
+      ensure
+        ActiveModelSerializers.config.raise_cannot_infer_root_key_error = previous_raise_cannot_infer_root_key_error
+      end
+
       def test_json_key_with_empty_resources_with_serializer
         resource = []
         serializer = collection_serializer.new(resource, serializer: MessagesSerializer)
diff --git a/test/grape_test.rb b/test/grape_test.rb
deleted file mode 100644
index 3abcd1d..0000000
--- a/test/grape_test.rb
+++ /dev/null
@@ -1,198 +0,0 @@
-# frozen_string_literal: true
-
-require 'test_helper'
-TestHelper.silence_warnings do
-  require 'grape'
-end
-require 'grape/active_model_serializers'
-require 'kaminari'
-require 'kaminari/hooks'
-::Kaminari::Hooks.init
-
-module ActiveModelSerializers
-  class GrapeTest < ActiveSupport::TestCase
-    include Rack::Test::Methods
-    module Models
-      def self.model1
-        ARModels::Post.new(id: 1, title: 'Dummy Title', body: 'Lorem Ipsum')
-      end
-
-      def self.model2
-        ARModels::Post.new(id: 2, title: 'Second Dummy Title', body: 'Second Lorem Ipsum')
-      end
-
-      def self.all
-        @all ||=
-          begin
-            model1.save!
-            model2.save!
-            ARModels::Post.all
-          end
-      end
-
-      def self.reset_all
-        ARModels::Post.delete_all
-        @all = nil
-      end
-
-      def self.collection_per
-        2
-      end
-
-      def self.collection
-        @collection ||=
-          begin
-            Kaminari.paginate_array(
-              [
-                Profile.new(id: 1, name: 'Name 1', description: 'Description 1', comments: 'Comments 1'),
-                Profile.new(id: 2, name: 'Name 2', description: 'Description 2', comments: 'Comments 2'),
-                Profile.new(id: 3, name: 'Name 3', description: 'Description 3', comments: 'Comments 3'),
-                Profile.new(id: 4, name: 'Name 4', description: 'Description 4', comments: 'Comments 4'),
-                Profile.new(id: 5, name: 'Name 5', description: 'Description 5', comments: 'Comments 5')
-              ]
-            ).page(1).per(collection_per)
-          end
-      end
-    end
-
-    class GrapeTest < Grape::API
-      format :json
-      TestHelper.silence_warnings do
-        include Grape::ActiveModelSerializers
-      end
-
-      def self.resources(*)
-        TestHelper.silence_warnings do
-          super
-        end
-      end
-
-      resources :grape do
-        get '/render' do
-          render Models.model1
-        end
-
-        get '/render_with_json_api' do
-          post = Models.model1
-          render post, meta: { page: 1, total_pages: 2 }, adapter: :json_api
-        end
-
-        get '/render_array_with_json_api' do
-          posts = Models.all
-          render posts, adapter: :json_api
-        end
-
-        get '/render_collection_with_json_api' do
-          posts = Models.collection
-          render posts, adapter: :json_api
-        end
-
-        get '/render_with_implicit_formatter' do
-          Models.model1
-        end
-
-        get '/render_array_with_implicit_formatter' do
-          Models.all
-        end
-
-        get '/render_collection_with_implicit_formatter' do
-          Models.collection
-        end
-      end
-    end
-
-    def app
-      Grape::Middleware::Globals.new(GrapeTest.new)
-    end
-
-    extend Minitest::Assertions
-    def self.run_one_method(*)
-      _, stderr = capture_io do
-        super
-      end
-      fail Minitest::Assertion, stderr if stderr !~ /grape/
-    end
-
-    def test_formatter_returns_json
-      get '/grape/render'
-
-      post = Models.model1
-      serializable_resource = serializable(post)
-
-      assert last_response.ok?
-      assert_equal serializable_resource.to_json, last_response.body
-    end
-
-    def test_render_helper_passes_through_options_correctly
-      get '/grape/render_with_json_api'
-
-      post = Models.model1
-      serializable_resource = serializable(post, serializer: ARModels::PostSerializer, adapter: :json_api, meta: { page: 1, total_pages: 2 })
-
-      assert last_response.ok?
-      assert_equal serializable_resource.to_json, last_response.body
-    end
-
-    def test_formatter_handles_arrays
-      get '/grape/render_array_with_json_api'
-
-      posts = Models.all
-      serializable_resource = serializable(posts, adapter: :json_api)
-
-      assert last_response.ok?
-      assert_equal serializable_resource.to_json, last_response.body
-    ensure
-      Models.reset_all
-    end
-
-    def test_formatter_handles_collections
-      get '/grape/render_collection_with_json_api'
-      assert last_response.ok?
-
-      representation = JSON.parse(last_response.body)
-      assert representation.include?('data')
-      assert representation['data'].count == Models.collection_per
-      assert representation.include?('links')
-      assert representation['links'].count > 0
-    end
-
-    def test_implicit_formatter
-      post = Models.model1
-      serializable_resource = serializable(post, adapter: :json_api)
-
-      with_adapter :json_api do
-        get '/grape/render_with_implicit_formatter'
-      end
-
-      assert last_response.ok?
-      assert_equal serializable_resource.to_json, last_response.body
-    end
-
-    def test_implicit_formatter_handles_arrays
-      posts = Models.all
-      serializable_resource = serializable(posts, adapter: :json_api)
-
-      with_adapter :json_api do
-        get '/grape/render_array_with_implicit_formatter'
-      end
-
-      assert last_response.ok?
-      assert_equal serializable_resource.to_json, last_response.body
-    ensure
-      Models.reset_all
-    end
-
-    def test_implicit_formatter_handles_collections
-      with_adapter :json_api do
-        get '/grape/render_collection_with_implicit_formatter'
-      end
-
-      representation = JSON.parse(last_response.body)
-      assert last_response.ok?
-      assert representation.include?('data')
-      assert representation['data'].count == Models.collection_per
-      assert representation.include?('links')
-      assert representation['links'].count > 0
-    end
-  end
-end
diff --git a/test/support/isolated_unit.rb b/test/support/isolated_unit.rb
index 968ae00..b83e0b2 100644
--- a/test/support/isolated_unit.rb
+++ b/test/support/isolated_unit.rb
@@ -68,6 +68,7 @@ module TestHelpers
         fake_logger = Logger.new(nil)
         config.logger = fake_logger
         Rails.application.routes.default_url_options = { host: 'example.com' }
+        config.hosts << 'www.example.com' if Rails.version >= '6.0'
       end
       def app.name; 'IsolatedRailsApp'; end # rubocop:disable Style/SingleLineMethods
       app.respond_to?(:secrets) && app.secrets.secret_key_base = '3b7cd727ee24e8444053437c36cc66c4'
diff --git a/test/support/rails_app.rb b/test/support/rails_app.rb
index 5f81d43..26cc770 100644
--- a/test/support/rails_app.rb
+++ b/test/support/rails_app.rb
@@ -14,6 +14,8 @@ module ActiveModelSerializers
       end
 
       config.filter_parameters += [:password]
+
+      config.hosts << 'www.example.com' if Rails.version >= '6.0'
     end
 
     app.routes.default_url_options = { host: 'example.com' }
diff --git a/test/test_helper.rb b/test/test_helper.rb
index e8f60cc..7d8ca63 100644
--- a/test/test_helper.rb
+++ b/test/test_helper.rb
@@ -4,13 +4,6 @@
 ENV['RAILS_ENV'] = 'test'
 require 'bundler/setup'
 
-begin
-  require 'simplecov'
-  AppCoverage.start
-rescue LoadError
-  STDERR.puts 'Running without SimpleCov'
-end
-
 require 'pry'
 require 'timecop'
 require 'rails'

Debdiff

[The following lists of changes regard files as different if they have different names, permissions or owners.]

Files in second set of .debs but not in first

-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/action_controller/serialization.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializable_resource.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/adapter.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/adapter/attributes.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/adapter/base.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/adapter/json.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/adapter/json_api.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/adapter/null.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/array_serializer.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/association.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/attribute.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/belongs_to_reflection.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/collection_serializer.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/concerns/caching.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/error_serializer.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/errors_serializer.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/field.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/fieldset.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/has_many_reflection.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/has_one_reflection.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/lazy_association.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/link.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/lint.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/null.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/reflection.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model/serializer/version.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/adapter.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/adapter/attributes.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/adapter/base.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/adapter/json.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/adapter/json_api.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/adapter/json_api/deserialization.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/adapter/json_api/error.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/adapter/json_api/jsonapi.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/adapter/json_api/link.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/adapter/json_api/meta.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/adapter/json_api/pagination_links.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/adapter/json_api/relationship.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/adapter/json_api/resource_identifier.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/adapter/null.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/callbacks.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/deprecate.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/deserialization.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/json_pointer.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/logging.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/lookup_chain.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/model.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/railtie.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/register_jsonapi_renderer.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/serializable_resource.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/serialization_context.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/test.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/test/schema.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/active_model_serializers/test/serializer.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/generators/rails/USAGE
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/generators/rails/resource_override.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/generators/rails/serializer_generator.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/generators/rails/templates/serializer.rb.erb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/grape/active_model_serializers.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/grape/formatters/active_model_serializers.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/grape/helpers/active_model_serializers.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.13/lib/tasks/rubocop.rake
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/specifications/active_model_serializers-0.10.13.gemspec

Files in first set of .debs but not in second

-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/action_controller/serialization.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializable_resource.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/adapter.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/adapter/attributes.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/adapter/base.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/adapter/json.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/adapter/json_api.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/adapter/null.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/array_serializer.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/association.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/attribute.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/belongs_to_reflection.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/collection_serializer.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/concerns/caching.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/error_serializer.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/errors_serializer.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/field.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/fieldset.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/has_many_reflection.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/has_one_reflection.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/lazy_association.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/link.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/lint.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/null.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/reflection.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model/serializer/version.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/adapter.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/adapter/attributes.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/adapter/base.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/adapter/json.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/adapter/json_api.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/adapter/json_api/deserialization.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/adapter/json_api/error.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/adapter/json_api/jsonapi.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/adapter/json_api/link.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/adapter/json_api/meta.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/adapter/json_api/pagination_links.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/adapter/json_api/relationship.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/adapter/json_api/resource_identifier.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/adapter/null.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/callbacks.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/deprecate.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/deserialization.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/json_pointer.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/logging.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/lookup_chain.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/model.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/railtie.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/register_jsonapi_renderer.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/serializable_resource.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/serialization_context.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/test.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/test/schema.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/active_model_serializers/test/serializer.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/generators/rails/USAGE
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/generators/rails/resource_override.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/generators/rails/serializer_generator.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/generators/rails/templates/serializer.rb.erb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/grape/active_model_serializers.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/grape/formatters/active_model_serializers.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/grape/helpers/active_model_serializers.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/gems/active_model_serializers-0.10.12/lib/tasks/rubocop.rake
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/specifications/active_model_serializers-0.10.12.gemspec

Control files: lines which differ (wdiff format)

  • Depends: ruby-activemodel (>= 2:4.1), ruby-activemodel (<< 2:6.2), 2:7.1), ruby-actionpack (>= 2:4.1), ruby-actionpack (<< 2:6.2), 2:7.1), ruby-jsonapi-renderer (>= 0.1.1.beta1), ruby-jsonapi-renderer (<< 0.3), ruby-case-transform (>= 0.2)

More details

Full run details