activesupport 5.1.6 → 5.2.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activesupport might be problematic. Click here for more details.
- checksums.yaml +5 -5
- data/CHANGELOG.md +325 -576
- data/MIT-LICENSE +1 -1
- data/README.rdoc +3 -3
- data/lib/active_support/all.rb +2 -0
- data/lib/active_support/array_inquirer.rb +2 -0
- data/lib/active_support/backtrace_cleaner.rb +2 -0
- data/lib/active_support/benchmarkable.rb +2 -0
- data/lib/active_support/builder.rb +2 -0
- data/lib/active_support/cache/file_store.rb +5 -4
- data/lib/active_support/cache/mem_cache_store.rb +37 -27
- data/lib/active_support/cache/memory_store.rb +2 -0
- data/lib/active_support/cache/null_store.rb +2 -0
- data/lib/active_support/cache/redis_cache_store.rb +454 -0
- data/lib/active_support/cache/strategy/local_cache.rb +33 -2
- data/lib/active_support/cache/strategy/local_cache_middleware.rb +2 -0
- data/lib/active_support/cache.rb +181 -64
- data/lib/active_support/callbacks.rb +28 -39
- data/lib/active_support/concern.rb +3 -1
- data/lib/active_support/concurrency/share_lock.rb +2 -0
- data/lib/active_support/configurable.rb +2 -0
- data/lib/active_support/core_ext/array/access.rb +4 -2
- data/lib/active_support/core_ext/array/conversions.rb +2 -0
- data/lib/active_support/core_ext/array/extract_options.rb +2 -0
- data/lib/active_support/core_ext/array/grouping.rb +2 -0
- data/lib/active_support/core_ext/array/inquiry.rb +2 -0
- data/lib/active_support/core_ext/array/prepend_and_append.rb +4 -2
- data/lib/active_support/core_ext/array/wrap.rb +2 -0
- data/lib/active_support/core_ext/array.rb +2 -0
- data/lib/active_support/core_ext/benchmark.rb +2 -0
- data/lib/active_support/core_ext/big_decimal/conversions.rb +2 -0
- data/lib/active_support/core_ext/big_decimal.rb +2 -0
- data/lib/active_support/core_ext/class/attribute.rb +34 -16
- data/lib/active_support/core_ext/class/attribute_accessors.rb +2 -0
- data/lib/active_support/core_ext/class/subclasses.rb +1 -2
- data/lib/active_support/core_ext/class.rb +2 -0
- data/lib/active_support/core_ext/date/acts_like.rb +2 -0
- data/lib/active_support/core_ext/date/blank.rb +2 -0
- data/lib/active_support/core_ext/date/calculations.rb +2 -0
- data/lib/active_support/core_ext/date/conversions.rb +10 -9
- data/lib/active_support/core_ext/date/zones.rb +2 -0
- data/lib/active_support/core_ext/date.rb +2 -0
- data/lib/active_support/core_ext/date_and_time/calculations.rb +50 -16
- data/lib/active_support/core_ext/date_and_time/compatibility.rb +3 -1
- data/lib/active_support/core_ext/date_and_time/zones.rb +2 -0
- data/lib/active_support/core_ext/date_time/acts_like.rb +2 -0
- data/lib/active_support/core_ext/date_time/blank.rb +2 -0
- data/lib/active_support/core_ext/date_time/calculations.rb +2 -0
- data/lib/active_support/core_ext/date_time/compatibility.rb +7 -5
- data/lib/active_support/core_ext/date_time/conversions.rb +2 -0
- data/lib/active_support/core_ext/date_time.rb +2 -0
- data/lib/active_support/core_ext/digest/uuid.rb +3 -1
- data/lib/active_support/core_ext/enumerable.rb +3 -1
- data/lib/active_support/core_ext/file/atomic.rb +2 -0
- data/lib/active_support/core_ext/file.rb +2 -0
- data/lib/active_support/core_ext/hash/compact.rb +2 -0
- data/lib/active_support/core_ext/hash/conversions.rb +4 -2
- data/lib/active_support/core_ext/hash/deep_merge.rb +8 -12
- data/lib/active_support/core_ext/hash/except.rb +2 -0
- data/lib/active_support/core_ext/hash/indifferent_access.rb +2 -0
- data/lib/active_support/core_ext/hash/keys.rb +2 -0
- data/lib/active_support/core_ext/hash/reverse_merge.rb +5 -2
- data/lib/active_support/core_ext/hash/slice.rb +4 -4
- data/lib/active_support/core_ext/hash/transform_values.rb +2 -0
- data/lib/active_support/core_ext/hash.rb +2 -0
- data/lib/active_support/core_ext/integer/inflections.rb +2 -0
- data/lib/active_support/core_ext/integer/multiple.rb +2 -0
- data/lib/active_support/core_ext/integer/time.rb +7 -14
- data/lib/active_support/core_ext/integer.rb +2 -0
- data/lib/active_support/core_ext/kernel/agnostics.rb +2 -0
- data/lib/active_support/core_ext/kernel/concern.rb +2 -0
- data/lib/active_support/core_ext/kernel/reporting.rb +2 -0
- data/lib/active_support/core_ext/kernel/singleton_class.rb +2 -0
- data/lib/active_support/core_ext/kernel.rb +2 -0
- data/lib/active_support/core_ext/load_error.rb +2 -7
- data/lib/active_support/core_ext/marshal.rb +2 -0
- data/lib/active_support/core_ext/module/aliasing.rb +2 -0
- data/lib/active_support/core_ext/module/anonymous.rb +2 -0
- data/lib/active_support/core_ext/module/attr_internal.rb +2 -0
- data/lib/active_support/core_ext/module/attribute_accessors.rb +21 -24
- data/lib/active_support/core_ext/module/attribute_accessors_per_thread.rb +2 -0
- data/lib/active_support/core_ext/module/concerning.rb +7 -8
- data/lib/active_support/core_ext/module/delegation.rb +31 -29
- data/lib/active_support/core_ext/module/deprecation.rb +2 -0
- data/lib/active_support/core_ext/module/introspection.rb +2 -0
- data/lib/active_support/core_ext/module/reachable.rb +3 -0
- data/lib/active_support/core_ext/module/redefine_method.rb +49 -0
- data/lib/active_support/core_ext/module/remove_method.rb +5 -23
- data/lib/active_support/core_ext/module.rb +3 -0
- data/lib/active_support/core_ext/name_error.rb +7 -0
- data/lib/active_support/core_ext/numeric/bytes.rb +2 -0
- data/lib/active_support/core_ext/numeric/conversions.rb +9 -7
- data/lib/active_support/core_ext/numeric/inquiry.rb +2 -0
- data/lib/active_support/core_ext/numeric/time.rb +7 -15
- data/lib/active_support/core_ext/numeric.rb +2 -0
- data/lib/active_support/core_ext/object/acts_like.rb +12 -1
- data/lib/active_support/core_ext/object/blank.rb +12 -1
- data/lib/active_support/core_ext/object/conversions.rb +2 -0
- data/lib/active_support/core_ext/object/deep_dup.rb +2 -0
- data/lib/active_support/core_ext/object/duplicable.rb +10 -8
- data/lib/active_support/core_ext/object/inclusion.rb +2 -0
- data/lib/active_support/core_ext/object/instance_variables.rb +2 -0
- data/lib/active_support/core_ext/object/json.rb +8 -0
- data/lib/active_support/core_ext/object/to_param.rb +2 -0
- data/lib/active_support/core_ext/object/to_query.rb +2 -0
- data/lib/active_support/core_ext/object/try.rb +2 -0
- data/lib/active_support/core_ext/object/with_options.rb +3 -1
- data/lib/active_support/core_ext/object.rb +2 -0
- data/lib/active_support/core_ext/range/conversions.rb +9 -1
- data/lib/active_support/core_ext/range/each.rb +5 -1
- data/lib/active_support/core_ext/range/include_range.rb +2 -0
- data/lib/active_support/core_ext/range/include_time_with_zone.rb +23 -0
- data/lib/active_support/core_ext/range/overlaps.rb +2 -0
- data/lib/active_support/core_ext/range.rb +3 -0
- data/lib/active_support/core_ext/regexp.rb +2 -0
- data/lib/active_support/core_ext/securerandom.rb +2 -0
- data/lib/active_support/core_ext/string/access.rb +2 -0
- data/lib/active_support/core_ext/string/behavior.rb +2 -0
- data/lib/active_support/core_ext/string/conversions.rb +2 -0
- data/lib/active_support/core_ext/string/exclude.rb +2 -0
- data/lib/active_support/core_ext/string/filters.rb +2 -0
- data/lib/active_support/core_ext/string/indent.rb +2 -0
- data/lib/active_support/core_ext/string/inflections.rb +26 -12
- data/lib/active_support/core_ext/string/inquiry.rb +2 -0
- data/lib/active_support/core_ext/string/multibyte.rb +4 -0
- data/lib/active_support/core_ext/string/output_safety.rb +6 -7
- data/lib/active_support/core_ext/string/starts_ends_with.rb +2 -0
- data/lib/active_support/core_ext/string/strip.rb +2 -0
- data/lib/active_support/core_ext/string/zones.rb +2 -0
- data/lib/active_support/core_ext/string.rb +2 -0
- data/lib/active_support/core_ext/time/acts_like.rb +2 -0
- data/lib/active_support/core_ext/time/calculations.rb +23 -15
- data/lib/active_support/core_ext/time/compatibility.rb +4 -2
- data/lib/active_support/core_ext/time/conversions.rb +2 -0
- data/lib/active_support/core_ext/time/zones.rb +6 -4
- data/lib/active_support/core_ext/time.rb +2 -0
- data/lib/active_support/core_ext/uri.rb +4 -1
- data/lib/active_support/core_ext.rb +3 -1
- data/lib/active_support/current_attributes.rb +195 -0
- data/lib/active_support/dependencies/autoload.rb +2 -0
- data/lib/active_support/dependencies/interlock.rb +2 -0
- data/lib/active_support/dependencies.rb +16 -25
- data/lib/active_support/deprecation/behaviors.rb +24 -9
- data/lib/active_support/deprecation/constant_accessor.rb +4 -2
- data/lib/active_support/deprecation/instance_delegator.rb +2 -0
- data/lib/active_support/deprecation/method_wrappers.rb +8 -8
- data/lib/active_support/deprecation/proxy_wrappers.rb +5 -2
- data/lib/active_support/deprecation/reporting.rb +5 -3
- data/lib/active_support/deprecation.rb +4 -2
- data/lib/active_support/descendants_tracker.rb +2 -0
- data/lib/active_support/digest.rb +20 -0
- data/lib/active_support/duration/iso8601_parser.rb +4 -2
- data/lib/active_support/duration/iso8601_serializer.rb +4 -2
- data/lib/active_support/duration.rb +11 -7
- data/lib/active_support/encrypted_configuration.rb +49 -0
- data/lib/active_support/encrypted_file.rb +99 -0
- data/lib/active_support/evented_file_update_checker.rb +2 -0
- data/lib/active_support/execution_wrapper.rb +2 -0
- data/lib/active_support/executor.rb +2 -0
- data/lib/active_support/file_update_checker.rb +2 -0
- data/lib/active_support/gem_version.rb +4 -2
- data/lib/active_support/gzip.rb +2 -0
- data/lib/active_support/hash_with_indifferent_access.rb +41 -1
- data/lib/active_support/i18n.rb +3 -1
- data/lib/active_support/i18n_railtie.rb +4 -6
- data/lib/active_support/inflections.rb +2 -0
- data/lib/active_support/inflector/inflections.rb +20 -4
- data/lib/active_support/inflector/methods.rb +41 -24
- data/lib/active_support/inflector/transliterate.rb +17 -8
- data/lib/active_support/inflector.rb +2 -0
- data/lib/active_support/json/decoding.rb +2 -0
- data/lib/active_support/json/encoding.rb +2 -0
- data/lib/active_support/json.rb +2 -0
- data/lib/active_support/key_generator.rb +3 -1
- data/lib/active_support/lazy_load_hooks.rb +2 -0
- data/lib/active_support/log_subscriber/test_helper.rb +2 -0
- data/lib/active_support/log_subscriber.rb +3 -2
- data/lib/active_support/logger.rb +2 -0
- data/lib/active_support/logger_silence.rb +3 -2
- data/lib/active_support/logger_thread_safe_level.rb +2 -0
- data/lib/active_support/message_encryptor.rb +95 -22
- data/lib/active_support/message_verifier.rb +78 -7
- data/lib/active_support/messages/metadata.rb +71 -0
- data/lib/active_support/messages/rotation_configuration.rb +22 -0
- data/lib/active_support/messages/rotator.rb +56 -0
- data/lib/active_support/multibyte/chars.rb +2 -0
- data/lib/active_support/multibyte/unicode.rb +4 -2
- data/lib/active_support/multibyte.rb +2 -0
- data/lib/active_support/notifications/fanout.rb +2 -0
- data/lib/active_support/notifications/instrumenter.rb +2 -0
- data/lib/active_support/notifications.rb +2 -0
- data/lib/active_support/number_helper/number_converter.rb +2 -0
- data/lib/active_support/number_helper/number_to_currency_converter.rb +2 -0
- data/lib/active_support/number_helper/number_to_delimited_converter.rb +2 -0
- data/lib/active_support/number_helper/number_to_human_converter.rb +2 -0
- data/lib/active_support/number_helper/number_to_human_size_converter.rb +2 -0
- data/lib/active_support/number_helper/number_to_percentage_converter.rb +2 -0
- data/lib/active_support/number_helper/number_to_phone_converter.rb +3 -1
- data/lib/active_support/number_helper/number_to_rounded_converter.rb +2 -20
- data/lib/active_support/number_helper/rounding_helper.rb +6 -4
- data/lib/active_support/number_helper.rb +2 -0
- data/lib/active_support/option_merger.rb +2 -0
- data/lib/active_support/ordered_hash.rb +2 -0
- data/lib/active_support/ordered_options.rb +4 -2
- data/lib/active_support/per_thread_registry.rb +2 -0
- data/lib/active_support/proxy_object.rb +2 -0
- data/lib/active_support/rails.rb +2 -0
- data/lib/active_support/railtie.rb +37 -8
- data/lib/active_support/reloader.rb +7 -5
- data/lib/active_support/rescuable.rb +3 -2
- data/lib/active_support/security_utils.rb +15 -11
- data/lib/active_support/string_inquirer.rb +2 -0
- data/lib/active_support/subscriber.rb +2 -0
- data/lib/active_support/tagged_logging.rb +2 -0
- data/lib/active_support/test_case.rb +2 -1
- data/lib/active_support/testing/assertions.rb +31 -14
- data/lib/active_support/testing/autorun.rb +2 -0
- data/lib/active_support/testing/constant_lookup.rb +2 -0
- data/lib/active_support/testing/declarative.rb +2 -0
- data/lib/active_support/testing/deprecation.rb +2 -0
- data/lib/active_support/testing/file_fixtures.rb +2 -0
- data/lib/active_support/testing/isolation.rb +3 -1
- data/lib/active_support/testing/method_call_assertions.rb +2 -0
- data/lib/active_support/testing/setup_and_teardown.rb +10 -1
- data/lib/active_support/testing/stream.rb +2 -0
- data/lib/active_support/testing/tagged_logging.rb +2 -0
- data/lib/active_support/testing/time_helpers.rb +33 -3
- data/lib/active_support/time.rb +2 -0
- data/lib/active_support/time_with_zone.rb +38 -0
- data/lib/active_support/values/time_zone.rb +19 -8
- data/lib/active_support/version.rb +2 -0
- data/lib/active_support/xml_mini/jdom.rb +4 -2
- data/lib/active_support/xml_mini/libxml.rb +3 -1
- data/lib/active_support/xml_mini/libxmlsax.rb +4 -2
- data/lib/active_support/xml_mini/nokogiri.rb +3 -1
- data/lib/active_support/xml_mini/nokogirisax.rb +3 -1
- data/lib/active_support/xml_mini/rexml.rb +3 -1
- data/lib/active_support/xml_mini.rb +3 -1
- data/lib/active_support.rb +5 -13
- metadata +15 -5
data/MIT-LICENSE
CHANGED
data/README.rdoc
CHANGED
@@ -14,14 +14,14 @@ The latest version of Active Support can be installed with RubyGems:
|
|
14
14
|
|
15
15
|
Source code can be downloaded as part of the Rails project on GitHub:
|
16
16
|
|
17
|
-
* https://github.com/rails/rails/tree/
|
17
|
+
* https://github.com/rails/rails/tree/5-2-stable/activesupport
|
18
18
|
|
19
19
|
|
20
20
|
== License
|
21
21
|
|
22
22
|
Active Support is released under the MIT license:
|
23
23
|
|
24
|
-
*
|
24
|
+
* https://opensource.org/licenses/MIT
|
25
25
|
|
26
26
|
|
27
27
|
== Support
|
@@ -30,7 +30,7 @@ API documentation is at:
|
|
30
30
|
|
31
31
|
* http://api.rubyonrails.org
|
32
32
|
|
33
|
-
Bug reports
|
33
|
+
Bug reports for the Ruby on Rails project can be filed here:
|
34
34
|
|
35
35
|
* https://github.com/rails/rails/issues
|
36
36
|
|
data/lib/active_support/all.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "active_support/core_ext/marshal"
|
2
4
|
require "active_support/core_ext/file/atomic"
|
3
5
|
require "active_support/core_ext/string/conversions"
|
@@ -37,9 +39,8 @@ module ActiveSupport
|
|
37
39
|
def cleanup(options = nil)
|
38
40
|
options = merged_options(options)
|
39
41
|
search_dir(cache_path) do |fname|
|
40
|
-
|
41
|
-
|
42
|
-
delete_entry(key, options) if entry && entry.expired?
|
42
|
+
entry = read_entry(fname, options)
|
43
|
+
delete_entry(fname, options) if entry && entry.expired?
|
43
44
|
end
|
44
45
|
end
|
45
46
|
|
@@ -120,7 +121,7 @@ module ActiveSupport
|
|
120
121
|
fname = URI.encode_www_form_component(key)
|
121
122
|
|
122
123
|
if fname.size > FILEPATH_MAX_SIZE
|
123
|
-
fname = Digest
|
124
|
+
fname = ActiveSupport::Digest.hexdigest(key)
|
124
125
|
end
|
125
126
|
|
126
127
|
hash = Zlib.adler32(fname)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
begin
|
2
4
|
require "dalli"
|
3
5
|
rescue LoadError => e
|
@@ -5,14 +7,13 @@ rescue LoadError => e
|
|
5
7
|
raise e
|
6
8
|
end
|
7
9
|
|
8
|
-
require "digest/md5"
|
9
10
|
require "active_support/core_ext/marshal"
|
10
11
|
require "active_support/core_ext/array/extract_options"
|
11
12
|
|
12
13
|
module ActiveSupport
|
13
14
|
module Cache
|
14
15
|
# A cache store implementation which stores data in Memcached:
|
15
|
-
#
|
16
|
+
# https://memcached.org
|
16
17
|
#
|
17
18
|
# This is currently the most popular cache store for production websites.
|
18
19
|
#
|
@@ -62,7 +63,14 @@ module ActiveSupport
|
|
62
63
|
addresses = addresses.flatten
|
63
64
|
options = addresses.extract_options!
|
64
65
|
addresses = ["localhost:11211"] if addresses.empty?
|
65
|
-
|
66
|
+
pool_options = retrieve_pool_options(options)
|
67
|
+
|
68
|
+
if pool_options.empty?
|
69
|
+
Dalli::Client.new(addresses, options)
|
70
|
+
else
|
71
|
+
ensure_connection_pool_added!
|
72
|
+
ConnectionPool.new(pool_options) { Dalli::Client.new(addresses, options.merge(threadsafe: false)) }
|
73
|
+
end
|
66
74
|
end
|
67
75
|
|
68
76
|
# Creates a new MemCacheStore object, with the given memcached server
|
@@ -90,22 +98,6 @@ module ActiveSupport
|
|
90
98
|
end
|
91
99
|
end
|
92
100
|
|
93
|
-
# Reads multiple values from the cache using a single call to the
|
94
|
-
# servers for all keys. Options can be passed in the last argument.
|
95
|
-
def read_multi(*names)
|
96
|
-
options = names.extract_options!
|
97
|
-
options = merged_options(options)
|
98
|
-
|
99
|
-
keys_to_names = Hash[names.map { |name| [normalize_key(name, options), name] }]
|
100
|
-
raw_values = @data.get_multi(keys_to_names.keys)
|
101
|
-
values = {}
|
102
|
-
raw_values.each do |key, value|
|
103
|
-
entry = deserialize_entry(value)
|
104
|
-
values[keys_to_names[key]] = entry.value unless entry.expired?
|
105
|
-
end
|
106
|
-
values
|
107
|
-
end
|
108
|
-
|
109
101
|
# Increment a cached value. This method uses the memcached incr atomic
|
110
102
|
# operator and can only be used on values written with the :raw option.
|
111
103
|
# Calling it on a value not stored with :raw will initialize that value
|
@@ -114,7 +106,7 @@ module ActiveSupport
|
|
114
106
|
options = merged_options(options)
|
115
107
|
instrument(:increment, name, amount: amount) do
|
116
108
|
rescue_error_with nil do
|
117
|
-
@data.incr(normalize_key(name, options), amount)
|
109
|
+
@data.with { |c| c.incr(normalize_key(name, options), amount, options[:expires_in]) }
|
118
110
|
end
|
119
111
|
end
|
120
112
|
end
|
@@ -127,7 +119,7 @@ module ActiveSupport
|
|
127
119
|
options = merged_options(options)
|
128
120
|
instrument(:decrement, name, amount: amount) do
|
129
121
|
rescue_error_with nil do
|
130
|
-
@data.decr(normalize_key(name, options), amount)
|
122
|
+
@data.with { |c| c.decr(normalize_key(name, options), amount, options[:expires_in]) }
|
131
123
|
end
|
132
124
|
end
|
133
125
|
end
|
@@ -135,18 +127,18 @@ module ActiveSupport
|
|
135
127
|
# Clear the entire cache on all memcached servers. This method should
|
136
128
|
# be used with care when shared cache is being used.
|
137
129
|
def clear(options = nil)
|
138
|
-
rescue_error_with(nil) { @data.flush_all }
|
130
|
+
rescue_error_with(nil) { @data.with { |c| c.flush_all } }
|
139
131
|
end
|
140
132
|
|
141
133
|
# Get the statistics from the memcached servers.
|
142
134
|
def stats
|
143
|
-
@data.stats
|
135
|
+
@data.with { |c| c.stats }
|
144
136
|
end
|
145
137
|
|
146
138
|
private
|
147
139
|
# Read an entry from the cache.
|
148
140
|
def read_entry(key, options)
|
149
|
-
rescue_error_with(nil) { deserialize_entry(@data.get(key, options)) }
|
141
|
+
rescue_error_with(nil) { deserialize_entry(@data.with { |c| c.get(key, options) }) }
|
150
142
|
end
|
151
143
|
|
152
144
|
# Write an entry to the cache.
|
@@ -159,13 +151,31 @@ module ActiveSupport
|
|
159
151
|
expires_in += 5.minutes
|
160
152
|
end
|
161
153
|
rescue_error_with false do
|
162
|
-
@data.send(method, key, value, expires_in, options)
|
154
|
+
@data.with { |c| c.send(method, key, value, expires_in, options) }
|
163
155
|
end
|
164
156
|
end
|
165
157
|
|
158
|
+
# Reads multiple entries from the cache implementation.
|
159
|
+
def read_multi_entries(names, options)
|
160
|
+
keys_to_names = Hash[names.map { |name| [normalize_key(name, options), name] }]
|
161
|
+
|
162
|
+
raw_values = @data.with { |c| c.get_multi(keys_to_names.keys) }
|
163
|
+
values = {}
|
164
|
+
|
165
|
+
raw_values.each do |key, value|
|
166
|
+
entry = deserialize_entry(value)
|
167
|
+
|
168
|
+
unless entry.expired? || entry.mismatched?(normalize_version(keys_to_names[key], options))
|
169
|
+
values[keys_to_names[key]] = entry.value
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
values
|
174
|
+
end
|
175
|
+
|
166
176
|
# Delete an entry from the cache.
|
167
177
|
def delete_entry(key, options)
|
168
|
-
rescue_error_with(false) { @data.delete(key) }
|
178
|
+
rescue_error_with(false) { @data.with { |c| c.delete(key) } }
|
169
179
|
end
|
170
180
|
|
171
181
|
# Memcache keys are binaries. So we need to force their encoding to binary
|
@@ -175,7 +185,7 @@ module ActiveSupport
|
|
175
185
|
key = super.dup
|
176
186
|
key = key.force_encoding(Encoding::ASCII_8BIT)
|
177
187
|
key = key.gsub(ESCAPE_KEY_CHARS) { |match| "%#{match.getbyte(0).to_s(16).upcase}" }
|
178
|
-
key = "#{key[0, 213]}:md5:#{Digest
|
188
|
+
key = "#{key[0, 213]}:md5:#{ActiveSupport::Digest.hexdigest(key)}" if key.size > 250
|
179
189
|
key
|
180
190
|
end
|
181
191
|
|