drop rails < 5

This commit is contained in:
Vasily Fedoseyev
2024-04-10 16:43:00 +03:00
parent 3dcb852b66
commit 1c5237ecaf
3 changed files with 20 additions and 49 deletions

View File

@@ -5,45 +5,15 @@ module Paperclip
module_function
def install_to(base)
mod = base.respond_to?(:set_callback) ? Rails3 : Rails21
base.extend(mod::Defining)
base.send(:include, mod::Running)
raise "#{base} does not respond to set_callback" unless base.respond_to?(:set_callback)
base.extend(Defining)
base.send(:include, Running)
end
module Rails21
module Defining
def define_paperclip_callbacks(*args)
args.each do |callback|
define_callbacks("before_#{callback}")
define_callbacks("after_#{callback}")
end
end
end
module Running
def run_paperclip_callbacks(callback, _opts = nil)
# The overall structure of this isn't ideal since after callbacks run even if
# befores return false. But this is how rails 3's callbacks work, unfortunately.
yield if run_callbacks(:"before_#{callback}") { |result, _object| result == false } != false
run_callbacks(:"after_#{callback}") { |result, _object| result == false }
end
end
end
module Rails3
module Defining
rails_version = Gem::Version.new(ActiveSupport::VERSION::STRING)
CALLBACK_OPTIONS =
if rails_version >= Gem::Version.new('5.0')
{}
elsif rails_version >= Gem::Version.new('4.1')
{ terminator: ->(_target, result) { result == false } }
else
{ terminator: 'result == false' }
end
def define_paperclip_callbacks(*callbacks)
define_callbacks(*callbacks.flatten, CALLBACK_OPTIONS)
define_callbacks(*callbacks.flatten, {})
callbacks.map(&:to_sym).each do |callback|
define_singleton_method "before_#{callback}" do |*args, &blk|
set_callback(callback, :before, *args, &blk)
@@ -63,5 +33,3 @@ module Paperclip
end
end
end
end

View File

@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
s.rubyforge_project = %q{paperclip}
s.summary = %q{File attachments as attributes for ActiveRecord}
s.add_dependency 'activesupport', '< 7.2'
s.add_dependency 'activesupport', [">= 5.0", '< 7.2']
s.add_dependency 'addressable'
s.add_dependency 'fastimage'
end

View File

@@ -99,6 +99,9 @@ def rebuild_class(options = {})
end
class FakeModel
def self.set_callback(...)
end
include Paperclip
attr_accessor :avatar_file_name,