]> cat aescling's git repositories - mastodon.git/commitdiff
Fix Paperclip using deprecated URI.escape function (#13320)
authorThibG <thib@sitedethib.com>
Thu, 26 Mar 2020 14:09:16 +0000 (15:09 +0100)
committerGitHub <noreply@github.com>
Thu, 26 Mar 2020 14:09:16 +0000 (15:09 +0100)
Monkey-patch Paperclip to perform URL escaping in a slightly more
appropriate way, and get rid of runtime deprecation warnings.

config/application.rb
lib/paperclip/url_generator_extensions.rb [new file with mode: 0644]

index cd599eefcea8c1d25b0e49a032b06c9f56d7efae..4c34efa152c0d49652f70b3e03875fee7429bcf0 100644 (file)
@@ -7,6 +7,7 @@ require 'rails/all'
 Bundler.require(*Rails.groups)
 
 require_relative '../app/lib/exceptions'
+require_relative '../lib/paperclip/url_generator_extensions'
 require_relative '../lib/paperclip/attachment_extensions'
 require_relative '../lib/paperclip/lazy_thumbnail'
 require_relative '../lib/paperclip/gif_transcoder'
diff --git a/lib/paperclip/url_generator_extensions.rb b/lib/paperclip/url_generator_extensions.rb
new file mode 100644 (file)
index 0000000..1079efd
--- /dev/null
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+module Paperclip
+  module UrlGeneratorExtensions
+    # Monkey-patch Paperclip to use Addressable::URI's normalization instead
+    # of the long-deprecated URI.esacpe
+    def escape_url(url)
+      if url.respond_to?(:escape)
+        url.escape
+      else
+        Addressable::URI.parse(url).normalize.to_str.gsub(escape_regex) { |m| "%#{m.ord.to_s(16).upcase}" }
+      end
+    end
+  end
+end
+
+Paperclip::UrlGenerator.prepend(Paperclip::UrlGeneratorExtensions)