From 72759f58674138a89f68a1184bfc2df8327d9d0d Mon Sep 17 00:00:00 2001 From: Pan Thomakos Date: Fri, 11 Mar 2011 17:57:28 -0800 Subject: Fixed special character encoding issue with MemCacheStore in Ruby 1.9.2. --- activesupport/lib/active_support/cache/mem_cache_store.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'activesupport/lib') diff --git a/activesupport/lib/active_support/cache/mem_cache_store.rb b/activesupport/lib/active_support/cache/mem_cache_store.rb index 45263d482f..a4b20719cd 100644 --- a/activesupport/lib/active_support/cache/mem_cache_store.rb +++ b/activesupport/lib/active_support/cache/mem_cache_store.rb @@ -158,7 +158,10 @@ module ActiveSupport private def escape_key(key) - key = key.to_s.gsub(ESCAPE_KEY_CHARS){|match| "%#{match.getbyte(0).to_s(16).upcase}"} + # Fix for EncodedKeyCacheBehavior failing tests in caching_test.rb. + key = key.to_s.dup + key = key.force_encoding(ESCAPE_KEY_CHARS.encoding) if key.respond_to?(:encoding) && key.encoding != ESCAPE_KEY_CHARS.encoding + key = key.gsub(ESCAPE_KEY_CHARS){|match| "%#{match.getbyte(0).to_s(16).upcase}"} key = "#{key[0, 213]}:md5:#{Digest::MD5.hexdigest(key)}" if key.size > 250 key end -- cgit v1.2.3