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)