1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Only apply monkey-patch if detected to be required

We test the failing case we're trying to patch; only if it throws an
Exception do we patch.

Currently this will *always* throw, but upstream Ruby has patched this
bug: https://git.io/vAxKB

Signed-off-by: Ashe Connor <ashe@kivikakk.ee>
This commit is contained in:
Ashe Connor 2018-03-09 11:27:15 +11:00
parent 6a54932d43
commit 8f5f2bf915
No known key found for this signature in database
GPG key ID: 44A3D2C95E26BB14

View file

@ -1,10 +1,17 @@
# frozen_string_literal: true
require "uri"
str = "\xE6\x97\xA5\xE6\x9C\xAC\xE8\xAA\x9E" # Ni-ho-nn-go in UTF-8, means Japanese.
str = "\xE6\x97\xA5"
parser = URI::Parser.new
unless str == parser.unescape(parser.escape(str))
needs_monkeypatch =
begin
str + str != parser.unescape(str + parser.escape(str).force_encoding(Encoding::UTF_8))
rescue Encoding::CompatibilityError
true
end
if needs_monkeypatch
require "active_support/core_ext/module/redefine_method"
URI::Parser.class_eval do
silence_redefinition_of_method :unescape