diff --git a/lib/paper_trail/attribute_serializers/cast_attribute_serializer.rb b/lib/paper_trail/attribute_serializers/cast_attribute_serializer.rb index c597f869..f63bf2b6 100644 --- a/lib/paper_trail/attribute_serializers/cast_attribute_serializer.rb +++ b/lib/paper_trail/attribute_serializers/cast_attribute_serializer.rb @@ -6,8 +6,7 @@ module PaperTrail # to an attribute of type `ActiveRecord::Type::Integer`. # # This implementation depends on the `type_for_attribute` method, which was - # introduced in rails 4.2. In older versions of rails, we shim this method - # with `LegacyActiveRecordShim`. + # introduced in rails 4.2. As of PT 8, we no longer support rails < 4.2. class CastAttributeSerializer def initialize(klass) @klass = klass diff --git a/lib/paper_trail/attribute_serializers/legacy_active_record_shim.rb b/lib/paper_trail/attribute_serializers/legacy_active_record_shim.rb deleted file mode 100644 index e9928caa..00000000 --- a/lib/paper_trail/attribute_serializers/legacy_active_record_shim.rb +++ /dev/null @@ -1,48 +0,0 @@ -module PaperTrail - module AttributeSerializers - # Included into model if AR version is < 4.2. Backport Rails 4.2 and later's - # `type_for_attribute` so we can build on a common interface. - module LegacyActiveRecordShim - # An attribute which needs no processing. It is part of our backport (shim) - # of rails 4.2's attribute API. See `type_for_attribute` below. - class NoOpAttribute - def type_cast_for_database(value) - value - end - - def type_cast_from_database(data) - data - end - end - NO_OP_ATTRIBUTE = NoOpAttribute.new - - # An attribute which requires manual (de)serialization to/from what we get - # from the database. It is part of our backport (shim) of rails 4.2's - # attribute API. See `type_for_attribute` below. - class SerializedAttribute - def initialize(coder) - @coder = coder.respond_to?(:dump) ? coder : PaperTrail.serializer - end - - def type_cast_for_database(value) - @coder.dump(value) - end - - def type_cast_from_database(data) - @coder.load(data) - end - end - - def type_for_attribute(attr_name) - serialized_attribute_types[attr_name.to_s] || NO_OP_ATTRIBUTE - end - - def serialized_attribute_types - @attribute_types ||= Hash[serialized_attributes.map do |attr_name, coder| - [attr_name, SerializedAttribute.new(coder)] - end] - end - private :serialized_attribute_types - end - end -end diff --git a/lib/paper_trail/has_paper_trail.rb b/lib/paper_trail/has_paper_trail.rb index d00aece2..0715dc49 100644 --- a/lib/paper_trail/has_paper_trail.rb +++ b/lib/paper_trail/has_paper_trail.rb @@ -1,5 +1,4 @@ require "active_support/core_ext/object" # provides the `try` method -require "paper_trail/attribute_serializers/legacy_active_record_shim" require "paper_trail/attribute_serializers/object_attribute" require "paper_trail/attribute_serializers/object_changes_attribute" require "paper_trail/model_config" diff --git a/lib/paper_trail/model_config.rb b/lib/paper_trail/model_config.rb index 25e8be53..da3b63bf 100644 --- a/lib/paper_trail/model_config.rb +++ b/lib/paper_trail/model_config.rb @@ -79,13 +79,6 @@ module PaperTrail options[:on] ||= %i[create update destroy] options[:on] = Array(options[:on]) # Support single symbol @model_class.send :include, ::PaperTrail::Model::InstanceMethods - if ::ActiveRecord::VERSION::STRING < "4.2" - ::ActiveSupport::Deprecation.warn( - "Your version of ActiveRecord (< 4.2) has reached EOL. PaperTrail " \ - "will soon drop support. Please upgrade ActiveRecord ASAP." - ) - @model_class.send :extend, AttributeSerializers::LegacyActiveRecordShim - end setup_options(options) setup_associations(options) setup_transaction_callbacks