From b1b253f5a8deff98d8aea935fb12c5996cdbf8f5 Mon Sep 17 00:00:00 2001 From: "Mark J. Lehman" Date: Wed, 11 Mar 2020 19:49:47 -0700 Subject: [PATCH] Fix Rails 6.0 deprecation on `class.parent` (#2373) * Fix Rails 6.0 deprecation on `class.parent` * Update Changelog * Switch travis to openJDK * Lock bundler on appveyor * Rejigger gemfile to fix sqlite issue * Lock nokogiri for ruby < 2.4 * Use rubygems < 3 to fix travis * Use specific bundler version and do not try to uninstall Uninstalling bundler is not allowed since it is a default gem * Lock rake for ruby < 2.2 * Downgrade rake further to support ruby 1.9.3 * Lock rake down further, and lock simplecov * Fix rubocop/parser and minitest version deps in CI * Lock sprockets version * Try fixing jruby builds * Try remove bad gem version for jruby on CI * Try downgrading rubygems a different way * Do not update rubygems on jruby * Lock gems for jruby * Fix sprockets version lock --- .travis.yml | 8 ++-- CHANGELOG.md | 2 + Gemfile | 53 ++++++++++++++++++++++---- appveyor.yml | 2 +- lib/action_controller/serialization.rb | 10 ++++- 5 files changed, 62 insertions(+), 13 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2cc4065b..49c2af11 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,13 +10,13 @@ rvm: - jruby-9.1.5.0 # is precompiled per http://rubies.travis-ci.org/ jdk: - - oraclejdk8 + - openjdk8 before_install: - - gem update --system - - rvm @global do gem uninstall bundler -a -x + - gem update --system 2.6.8 + - if [ "$RUBY_VERSION" != "jruby-9.1.5.0" ] ; then update_rubygems ; fi - rvm @global do gem install bundler -v 1.13.7 -install: bundle install --path=vendor/bundle --retry=3 --jobs=3 +install: bundle _1.13.7_ install --path=vendor/bundle --retry=3 --jobs=3 cache: directories: - vendor/bundle diff --git a/CHANGELOG.md b/CHANGELOG.md index fdaa6383..04fa54ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ### [0-9-stable](https://github.com/rails-api/active_model_serializers/compare/v0.9.7...0-9-stable) +- [#2373](https://github.com/rails-api/active_model_serializers/pull/2373) Fix Rails 6.0 deprecation warnings. (@supremebeing7) + ### [v0.9.7 (2017-05-01)](https://github.com/rails-api/active_model_serializers/compare/v0.9.6...v0.9.7) - [#2080](https://github.com/rails-api/active_model_serializers/pull/2080) remove `{ payload: nil }` from `!serialize.active_model_serializers` ActiveSupport::Notification. `payload` never had a value. Changes, for example `{ serializer: 'ActiveModel::DefaultSerializer', payload: nil }` to be `{ serializer: 'ActiveModel::DefaultSerializer' }` (@yosiat) diff --git a/Gemfile b/Gemfile index ef4e6445..073e1172 100644 --- a/Gemfile +++ b/Gemfile @@ -33,8 +33,22 @@ if RUBY_VERSION < '2' gem 'mime-types', [ '>= 2.6.2', '< 3' ] end -if RUBY_VERSION < '2.1' - gem 'nokogiri', '< 1.7' +if ENV['CI'] + if RUBY_VERSION < '2.4' + # Windows: An error occurred while installing nokogiri (1.8.0) + gem 'nokogiri', '< 1.7', platforms: @windows_platforms + # >= 4.0 requires ruby >= 2.5 + gem 'sprockets', '< 4.0' + end + + if RUBY_VERSION < '2.2' + # >= 12.3 and < 13 requires ruby >= 2.0, rake >= 13 requires ruby >= 2.2 + gem 'rake', '< 12.3' + # > 5.12 requires ruby >= 2.2 + gem 'minitest', '< 5.12' + # >= 1.0 requires ruby >= 2.0 + gem 'thor', '< 1.0' + end end # https://github.com/bundler/bundler/blob/89a8778c19269561926cea172acdcda241d26d23/lib/bundler/dependency.rb#L30-L54 @@ -50,12 +64,37 @@ group :bench do end group :test do - gem 'sqlite3', platform: (@windows_platforms + [:ruby]) - gem 'activerecord-jdbcsqlite3-adapter', platform: :jruby - - gem 'simplecov', '~> 0.10', require: false, group: :development + platforms(*(@windows_platforms + [:ruby])) do + if version == 'master' || version >= '6' + gem 'sqlite3', '~> 1.4' + else + gem 'sqlite3', '~> 1.3.13' + end + end + platforms :jruby do + if version == 'master' || version >= '6.0' + gem 'activerecord-jdbcsqlite3-adapter', github: 'jruby/activerecord-jdbc-adapter' + elsif version == '5.2' + gem 'activerecord-jdbcsqlite3-adapter', '~> 52.0' + elsif version == '5.1' + gem 'activerecord-jdbcsqlite3-adapter', '~> 51.0' + elsif version == '5.0' + gem 'activerecord-jdbcsqlite3-adapter', '~> 50.0' + else + gem 'activerecord-jdbcsqlite3-adapter', '~> 1.3.0' + end + end end group :development, :test do - gem 'rubocop', '~> 0.34.0', require: false + unless ENV['CI'] + gem 'rubocop', '~> 0.34.0', require: false + end + + # 0.12 requires ruby 2.4 + if RUBY_VERSION < '2.4' + gem 'simplecov', '< 0.12', require: false + else + gem 'simplecov', '~> 0.10', require: false + end end diff --git a/appveyor.yml b/appveyor.yml index a3326f8d..784d0e35 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -16,7 +16,7 @@ install: - SET PATH=C:\Ruby%ruby_version%\bin;%PATH% - ruby --version - gem --version - - gem install bundler + - gem install bundler -v 1.17.3 - bundler --version - bundle platform - bundle install --path=vendor/bundle --retry=3 --jobs=3 diff --git a/lib/action_controller/serialization.rb b/lib/action_controller/serialization.rb index d8aaef9a..1593dd14 100644 --- a/lib/action_controller/serialization.rb +++ b/lib/action_controller/serialization.rb @@ -60,7 +60,15 @@ module ActionController private def namespace_for_serializer - @namespace_for_serializer ||= self.class.parent unless self.class.parent == Object + @namespace_for_serializer ||= namespace_for_class(self.class) unless namespace_for_class(self.class) == Object + end + + def namespace_for_class(klass) + if Module.method_defined?(:module_parent) + klass.module_parent + else + klass.parent + end end def default_serializer(resource)