From 140b56d97fc3fc612b5830e3aab0a878608d57b0 Mon Sep 17 00:00:00 2001 From: Justin Coyne Date: Fri, 5 Jan 2024 15:23:10 -0600 Subject: [PATCH] Allow paper_trail up though version 15 --- blacklight-spotlight.gemspec | 2 +- lib/spotlight/engine.rb | 21 +++++++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/blacklight-spotlight.gemspec b/blacklight-spotlight.gemspec index 12b935c90..d5260f0f5 100644 --- a/blacklight-spotlight.gemspec +++ b/blacklight-spotlight.gemspec @@ -47,7 +47,7 @@ these collections.) s.add_dependency 'oauth2' s.add_dependency 'openseadragon' s.add_dependency 'ostruct', '!= 0.3.0', '!= 0.3.1', '!= 0.3.2' - s.add_dependency 'paper_trail', '>= 11.0', '< 13' + s.add_dependency 'paper_trail', '>= 11.0', '< 16' s.add_dependency 'rails', '>= 6.1', '< 8' s.add_dependency 'redcarpet', '>= 2.0.1', '< 4' s.add_dependency 'riiif', '~> 2.0' diff --git a/lib/spotlight/engine.rb b/lib/spotlight/engine.rb index 2878b2c01..7080be438 100644 --- a/lib/spotlight/engine.rb +++ b/lib/spotlight/engine.rb @@ -334,10 +334,23 @@ def self.call(template, source = nil) config.assign_default_roles_to_first_user = true config.exhibit_roles = %w[admin curator viewer] - - if ActiveRecord.respond_to?(:yaml_column_permitted_classes) || ActiveRecord::Base.respond_to?(:yaml_column_permitted_classes) - config.active_record.yaml_column_permitted_classes ||= [] - config.active_record.yaml_column_permitted_classes += [Symbol, ActiveSupport::HashWithIndifferentAccess] + # PaperTrail serializes objects to YAML, so we need to permit these classes to be deserialized + if ActiveRecord.respond_to?(:yaml_column_permitted_classes) + # Rails >= 7.0 + ActiveRecord.yaml_column_permitted_classes ||= [] + ActiveRecord.yaml_column_permitted_classes += [Symbol, + ActiveSupport::HashWithIndifferentAccess, + ActiveSupport::TimeWithZone, + ActiveSupport::TimeZone, + Time] + elsif ActiveRecord::Base.respond_to?(:yaml_column_permitted_classes) + # Rails 6.1 + ActiveRecord::Base.yaml_column_permitted_classes ||= [] + ActiveRecord::Base.yaml_column_permitted_classes += [Symbol, + ActiveSupport::HashWithIndifferentAccess, + ActiveSupport::TimeWithZone, + ActiveSupport::TimeZone, + Time] end end # rubocop:enable Metrics/ClassLength