activesupport 5.1.7 → 5.2.7
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 +4 -4
- data/CHANGELOG.md +424 -512
- 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 +39 -38
- 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 +466 -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 +197 -83
- data/lib/active_support/callbacks.rb +28 -39
- data/lib/active_support/concern.rb +10 -4
- 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/digest.rb +3 -0
- data/lib/active_support/core_ext/enumerable.rb +8 -1
- data/lib/active_support/core_ext/file/atomic.rb +3 -1
- 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/compare_range.rb +61 -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 -22
- 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 +4 -1
- 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 +6 -6
- 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 +25 -26
- data/lib/active_support/deprecation/behaviors.rb +28 -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 +30 -17
- 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 +22 -14
- 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 +18 -13
- 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 +3 -1
- data/lib/active_support/gzip.rb +2 -0
- data/lib/active_support/hash_with_indifferent_access.rb +55 -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 +43 -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 +4 -1
- 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 +4 -2
- 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 +5 -3
- 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 +8 -6
- 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 +8 -2
- data/lib/active_support/tagged_logging.rb +2 -0
- data/lib/active_support/test_case.rb +3 -2
- 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 +12 -7
- 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 +20 -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 +4 -2
- data/lib/active_support.rb +5 -13
- metadata +17 -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
|
#
|
@@ -27,14 +28,6 @@ module ActiveSupport
|
|
27
28
|
# Provide support for raw values in the local cache strategy.
|
28
29
|
module LocalCacheWithRaw # :nodoc:
|
29
30
|
private
|
30
|
-
def read_entry(key, options)
|
31
|
-
entry = super
|
32
|
-
if options[:raw] && local_cache && entry
|
33
|
-
entry = deserialize_entry(entry.value)
|
34
|
-
end
|
35
|
-
entry
|
36
|
-
end
|
37
|
-
|
38
31
|
def write_entry(key, entry, options)
|
39
32
|
if options[:raw] && local_cache
|
40
33
|
raw_entry = Entry.new(entry.value.to_s)
|
@@ -62,7 +55,14 @@ module ActiveSupport
|
|
62
55
|
addresses = addresses.flatten
|
63
56
|
options = addresses.extract_options!
|
64
57
|
addresses = ["localhost:11211"] if addresses.empty?
|
65
|
-
|
58
|
+
pool_options = retrieve_pool_options(options)
|
59
|
+
|
60
|
+
if pool_options.empty?
|
61
|
+
Dalli::Client.new(addresses, options)
|
62
|
+
else
|
63
|
+
ensure_connection_pool_added!
|
64
|
+
ConnectionPool.new(pool_options) { Dalli::Client.new(addresses, options.merge(threadsafe: false)) }
|
65
|
+
end
|
66
66
|
end
|
67
67
|
|
68
68
|
# Creates a new MemCacheStore object, with the given memcached server
|
@@ -90,22 +90,6 @@ module ActiveSupport
|
|
90
90
|
end
|
91
91
|
end
|
92
92
|
|
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
93
|
# Increment a cached value. This method uses the memcached incr atomic
|
110
94
|
# operator and can only be used on values written with the :raw option.
|
111
95
|
# Calling it on a value not stored with :raw will initialize that value
|
@@ -114,7 +98,7 @@ module ActiveSupport
|
|
114
98
|
options = merged_options(options)
|
115
99
|
instrument(:increment, name, amount: amount) do
|
116
100
|
rescue_error_with nil do
|
117
|
-
@data.incr(normalize_key(name, options), amount)
|
101
|
+
@data.with { |c| c.incr(normalize_key(name, options), amount, options[:expires_in]) }
|
118
102
|
end
|
119
103
|
end
|
120
104
|
end
|
@@ -127,7 +111,7 @@ module ActiveSupport
|
|
127
111
|
options = merged_options(options)
|
128
112
|
instrument(:decrement, name, amount: amount) do
|
129
113
|
rescue_error_with nil do
|
130
|
-
@data.decr(normalize_key(name, options), amount)
|
114
|
+
@data.with { |c| c.decr(normalize_key(name, options), amount, options[:expires_in]) }
|
131
115
|
end
|
132
116
|
end
|
133
117
|
end
|
@@ -135,18 +119,18 @@ module ActiveSupport
|
|
135
119
|
# Clear the entire cache on all memcached servers. This method should
|
136
120
|
# be used with care when shared cache is being used.
|
137
121
|
def clear(options = nil)
|
138
|
-
rescue_error_with(nil) { @data.flush_all }
|
122
|
+
rescue_error_with(nil) { @data.with { |c| c.flush_all } }
|
139
123
|
end
|
140
124
|
|
141
125
|
# Get the statistics from the memcached servers.
|
142
126
|
def stats
|
143
|
-
@data.stats
|
127
|
+
@data.with { |c| c.stats }
|
144
128
|
end
|
145
129
|
|
146
130
|
private
|
147
131
|
# Read an entry from the cache.
|
148
132
|
def read_entry(key, options)
|
149
|
-
rescue_error_with(nil) { deserialize_entry(@data.get(key, options)) }
|
133
|
+
rescue_error_with(nil) { deserialize_entry(@data.with { |c| c.get(key, options) }) }
|
150
134
|
end
|
151
135
|
|
152
136
|
# Write an entry to the cache.
|
@@ -159,13 +143,31 @@ module ActiveSupport
|
|
159
143
|
expires_in += 5.minutes
|
160
144
|
end
|
161
145
|
rescue_error_with false do
|
162
|
-
@data.send(method, key, value, expires_in, options)
|
146
|
+
@data.with { |c| c.send(method, key, value, expires_in, options) }
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
# Reads multiple entries from the cache implementation.
|
151
|
+
def read_multi_entries(names, options)
|
152
|
+
keys_to_names = Hash[names.map { |name| [normalize_key(name, options), name] }]
|
153
|
+
|
154
|
+
raw_values = @data.with { |c| c.get_multi(keys_to_names.keys) }
|
155
|
+
values = {}
|
156
|
+
|
157
|
+
raw_values.each do |key, value|
|
158
|
+
entry = deserialize_entry(value)
|
159
|
+
|
160
|
+
unless entry.expired? || entry.mismatched?(normalize_version(keys_to_names[key], options))
|
161
|
+
values[keys_to_names[key]] = entry.value
|
162
|
+
end
|
163
163
|
end
|
164
|
+
|
165
|
+
values
|
164
166
|
end
|
165
167
|
|
166
168
|
# Delete an entry from the cache.
|
167
169
|
def delete_entry(key, options)
|
168
|
-
rescue_error_with(false) { @data.delete(key) }
|
170
|
+
rescue_error_with(false) { @data.with { |c| c.delete(key) } }
|
169
171
|
end
|
170
172
|
|
171
173
|
# Memcache keys are binaries. So we need to force their encoding to binary
|
@@ -175,13 +177,12 @@ module ActiveSupport
|
|
175
177
|
key = super.dup
|
176
178
|
key = key.force_encoding(Encoding::ASCII_8BIT)
|
177
179
|
key = key.gsub(ESCAPE_KEY_CHARS) { |match| "%#{match.getbyte(0).to_s(16).upcase}" }
|
178
|
-
key = "#{key[0, 213]}:md5:#{Digest
|
180
|
+
key = "#{key[0, 213]}:md5:#{ActiveSupport::Digest.hexdigest(key)}" if key.size > 250
|
179
181
|
key
|
180
182
|
end
|
181
183
|
|
182
|
-
def deserialize_entry(
|
183
|
-
if
|
184
|
-
entry = Marshal.load(raw_value) rescue raw_value
|
184
|
+
def deserialize_entry(entry)
|
185
|
+
if entry
|
185
186
|
entry.is_a?(Entry) ? entry : Entry.new(entry)
|
186
187
|
end
|
187
188
|
end
|