aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/core_ext/uri.rb
diff options
context:
space:
mode:
authorMatthew Draper <matthew@trebex.net>2017-05-26 13:12:21 +0930
committerMatthew Draper <matthew@trebex.net>2017-09-01 14:27:13 +0930
commit2e6658ae510e17e9e6e98ebd784066752ea6027c (patch)
treea5424b329e24f37cab0b6e4698b39a0ac592573f /activesupport/lib/active_support/core_ext/uri.rb
parent2cd8ac1b68ba04ca12a816c8113271017b3c43c4 (diff)
downloadrails-2e6658ae510e17e9e6e98ebd784066752ea6027c.tar.gz
rails-2e6658ae510e17e9e6e98ebd784066752ea6027c.tar.bz2
rails-2e6658ae510e17e9e6e98ebd784066752ea6027c.zip
Clarify intentions around method redefinitions
Don't use remove_method or remove_possible_method just before a new definition: at best the purpose is unclear, and at worst it creates a race condition. Instead, prefer redefine_method when practical, and silence_redefinition_of_method otherwise.
Diffstat (limited to 'activesupport/lib/active_support/core_ext/uri.rb')
-rw-r--r--activesupport/lib/active_support/core_ext/uri.rb3
1 files changed, 2 insertions, 1 deletions
diff --git a/activesupport/lib/active_support/core_ext/uri.rb b/activesupport/lib/active_support/core_ext/uri.rb
index 60fc7f084f..c93c0b5c2d 100644
--- a/activesupport/lib/active_support/core_ext/uri.rb
+++ b/activesupport/lib/active_support/core_ext/uri.rb
@@ -5,8 +5,9 @@ str = "\xE6\x97\xA5\xE6\x9C\xAC\xE8\xAA\x9E" # Ni-ho-nn-go in UTF-8, means Japan
parser = URI::Parser.new
unless str == parser.unescape(parser.escape(str))
+ require "active_support/core_ext/module/redefine_method"
URI::Parser.class_eval do
- remove_method :unescape
+ silence_redefinition_of_method :unescape
def unescape(str, escaped = /%[a-fA-F\d]{2}/)
# TODO: Are we actually sure that ASCII == UTF-8?
# YK: My initial experiments say yes, but let's be sure please