activesupport 7.0.4 → 7.1.3.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (187) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +996 -232
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +6 -6
  5. data/lib/active_support/actionable_error.rb +3 -1
  6. data/lib/active_support/array_inquirer.rb +2 -0
  7. data/lib/active_support/backtrace_cleaner.rb +25 -5
  8. data/lib/active_support/benchmarkable.rb +1 -0
  9. data/lib/active_support/broadcast_logger.rb +250 -0
  10. data/lib/active_support/builder.rb +1 -1
  11. data/lib/active_support/cache/coder.rb +153 -0
  12. data/lib/active_support/cache/entry.rb +134 -0
  13. data/lib/active_support/cache/file_store.rb +37 -10
  14. data/lib/active_support/cache/mem_cache_store.rb +100 -76
  15. data/lib/active_support/cache/memory_store.rb +78 -24
  16. data/lib/active_support/cache/null_store.rb +6 -0
  17. data/lib/active_support/cache/redis_cache_store.rb +153 -141
  18. data/lib/active_support/cache/serializer_with_fallback.rb +175 -0
  19. data/lib/active_support/cache/strategy/local_cache.rb +29 -14
  20. data/lib/active_support/cache.rb +331 -252
  21. data/lib/active_support/callbacks.rb +44 -21
  22. data/lib/active_support/concern.rb +4 -2
  23. data/lib/active_support/concurrency/load_interlock_aware_monitor.rb +42 -3
  24. data/lib/active_support/concurrency/null_lock.rb +13 -0
  25. data/lib/active_support/configurable.rb +10 -0
  26. data/lib/active_support/core_ext/array/conversions.rb +2 -1
  27. data/lib/active_support/core_ext/array.rb +0 -1
  28. data/lib/active_support/core_ext/class/subclasses.rb +13 -10
  29. data/lib/active_support/core_ext/date/calculations.rb +15 -0
  30. data/lib/active_support/core_ext/date/conversions.rb +2 -1
  31. data/lib/active_support/core_ext/date.rb +0 -1
  32. data/lib/active_support/core_ext/date_and_time/calculations.rb +10 -0
  33. data/lib/active_support/core_ext/date_time/calculations.rb +4 -0
  34. data/lib/active_support/core_ext/date_time/conversions.rb +6 -2
  35. data/lib/active_support/core_ext/date_time.rb +0 -1
  36. data/lib/active_support/core_ext/digest/uuid.rb +1 -10
  37. data/lib/active_support/core_ext/enumerable.rb +8 -75
  38. data/lib/active_support/core_ext/erb/util.rb +196 -0
  39. data/lib/active_support/core_ext/hash/conversions.rb +1 -1
  40. data/lib/active_support/core_ext/hash/deep_merge.rb +22 -14
  41. data/lib/active_support/core_ext/hash/deep_transform_values.rb +3 -3
  42. data/lib/active_support/core_ext/hash/keys.rb +3 -3
  43. data/lib/active_support/core_ext/integer/inflections.rb +12 -12
  44. data/lib/active_support/core_ext/module/attribute_accessors.rb +6 -0
  45. data/lib/active_support/core_ext/module/attribute_accessors_per_thread.rb +34 -16
  46. data/lib/active_support/core_ext/module/concerning.rb +6 -6
  47. data/lib/active_support/core_ext/module/delegation.rb +40 -11
  48. data/lib/active_support/core_ext/module/deprecation.rb +15 -12
  49. data/lib/active_support/core_ext/module/introspection.rb +0 -1
  50. data/lib/active_support/core_ext/numeric/bytes.rb +9 -0
  51. data/lib/active_support/core_ext/numeric/conversions.rb +2 -0
  52. data/lib/active_support/core_ext/numeric.rb +0 -1
  53. data/lib/active_support/core_ext/object/deep_dup.rb +16 -0
  54. data/lib/active_support/core_ext/object/duplicable.rb +5 -5
  55. data/lib/active_support/core_ext/object/inclusion.rb +13 -5
  56. data/lib/active_support/core_ext/object/instance_variables.rb +22 -12
  57. data/lib/active_support/core_ext/object/json.rb +11 -3
  58. data/lib/active_support/core_ext/object/to_query.rb +0 -2
  59. data/lib/active_support/core_ext/object/with.rb +44 -0
  60. data/lib/active_support/core_ext/object/with_options.rb +9 -9
  61. data/lib/active_support/core_ext/object.rb +1 -0
  62. data/lib/active_support/core_ext/pathname/blank.rb +16 -0
  63. data/lib/active_support/core_ext/pathname/existence.rb +2 -0
  64. data/lib/active_support/core_ext/pathname.rb +1 -0
  65. data/lib/active_support/core_ext/range/conversions.rb +28 -7
  66. data/lib/active_support/core_ext/range/overlap.rb +40 -0
  67. data/lib/active_support/core_ext/range.rb +1 -2
  68. data/lib/active_support/core_ext/securerandom.rb +24 -12
  69. data/lib/active_support/core_ext/string/filters.rb +20 -14
  70. data/lib/active_support/core_ext/string/indent.rb +1 -1
  71. data/lib/active_support/core_ext/string/inflections.rb +16 -9
  72. data/lib/active_support/core_ext/string/output_safety.rb +42 -174
  73. data/lib/active_support/core_ext/thread/backtrace/location.rb +12 -0
  74. data/lib/active_support/core_ext/time/calculations.rb +22 -2
  75. data/lib/active_support/core_ext/time/conversions.rb +2 -2
  76. data/lib/active_support/core_ext/time/zones.rb +7 -8
  77. data/lib/active_support/core_ext/time.rb +0 -1
  78. data/lib/active_support/current_attributes.rb +15 -6
  79. data/lib/active_support/deep_mergeable.rb +53 -0
  80. data/lib/active_support/dependencies/autoload.rb +17 -12
  81. data/lib/active_support/deprecation/behaviors.rb +65 -42
  82. data/lib/active_support/deprecation/constant_accessor.rb +5 -4
  83. data/lib/active_support/deprecation/deprecators.rb +104 -0
  84. data/lib/active_support/deprecation/disallowed.rb +6 -8
  85. data/lib/active_support/deprecation/instance_delegator.rb +31 -4
  86. data/lib/active_support/deprecation/method_wrappers.rb +6 -23
  87. data/lib/active_support/deprecation/proxy_wrappers.rb +37 -22
  88. data/lib/active_support/deprecation/reporting.rb +42 -25
  89. data/lib/active_support/deprecation.rb +32 -5
  90. data/lib/active_support/deprecator.rb +7 -0
  91. data/lib/active_support/descendants_tracker.rb +104 -132
  92. data/lib/active_support/duration/iso8601_serializer.rb +0 -2
  93. data/lib/active_support/duration.rb +2 -1
  94. data/lib/active_support/encrypted_configuration.rb +63 -11
  95. data/lib/active_support/encrypted_file.rb +16 -12
  96. data/lib/active_support/environment_inquirer.rb +22 -2
  97. data/lib/active_support/error_reporter/test_helper.rb +15 -0
  98. data/lib/active_support/error_reporter.rb +121 -35
  99. data/lib/active_support/evented_file_update_checker.rb +17 -2
  100. data/lib/active_support/execution_wrapper.rb +4 -4
  101. data/lib/active_support/file_update_checker.rb +4 -2
  102. data/lib/active_support/fork_tracker.rb +10 -2
  103. data/lib/active_support/gem_version.rb +4 -4
  104. data/lib/active_support/gzip.rb +2 -0
  105. data/lib/active_support/hash_with_indifferent_access.rb +35 -17
  106. data/lib/active_support/html_safe_translation.rb +12 -2
  107. data/lib/active_support/i18n.rb +1 -1
  108. data/lib/active_support/i18n_railtie.rb +20 -13
  109. data/lib/active_support/inflector/inflections.rb +2 -0
  110. data/lib/active_support/inflector/methods.rb +28 -18
  111. data/lib/active_support/inflector/transliterate.rb +3 -1
  112. data/lib/active_support/isolated_execution_state.rb +26 -22
  113. data/lib/active_support/json/decoding.rb +2 -1
  114. data/lib/active_support/json/encoding.rb +25 -43
  115. data/lib/active_support/key_generator.rb +9 -1
  116. data/lib/active_support/lazy_load_hooks.rb +7 -5
  117. data/lib/active_support/locale/en.yml +2 -0
  118. data/lib/active_support/log_subscriber.rb +84 -33
  119. data/lib/active_support/logger.rb +9 -60
  120. data/lib/active_support/logger_thread_safe_level.rb +10 -24
  121. data/lib/active_support/message_encryptor.rb +197 -53
  122. data/lib/active_support/message_encryptors.rb +141 -0
  123. data/lib/active_support/message_pack/cache_serializer.rb +23 -0
  124. data/lib/active_support/message_pack/extensions.rb +292 -0
  125. data/lib/active_support/message_pack/serializer.rb +63 -0
  126. data/lib/active_support/message_pack.rb +50 -0
  127. data/lib/active_support/message_verifier.rb +212 -93
  128. data/lib/active_support/message_verifiers.rb +135 -0
  129. data/lib/active_support/messages/codec.rb +65 -0
  130. data/lib/active_support/messages/metadata.rb +111 -45
  131. data/lib/active_support/messages/rotation_coordinator.rb +93 -0
  132. data/lib/active_support/messages/rotator.rb +34 -32
  133. data/lib/active_support/messages/serializer_with_fallback.rb +158 -0
  134. data/lib/active_support/multibyte/chars.rb +2 -0
  135. data/lib/active_support/multibyte/unicode.rb +9 -37
  136. data/lib/active_support/notifications/fanout.rb +245 -81
  137. data/lib/active_support/notifications/instrumenter.rb +77 -20
  138. data/lib/active_support/notifications.rb +3 -3
  139. data/lib/active_support/number_helper/number_converter.rb +14 -5
  140. data/lib/active_support/number_helper/number_to_currency_converter.rb +6 -6
  141. data/lib/active_support/number_helper/number_to_human_size_converter.rb +3 -3
  142. data/lib/active_support/number_helper/number_to_phone_converter.rb +1 -0
  143. data/lib/active_support/number_helper.rb +379 -317
  144. data/lib/active_support/ordered_hash.rb +3 -3
  145. data/lib/active_support/ordered_options.rb +14 -0
  146. data/lib/active_support/parameter_filter.rb +103 -84
  147. data/lib/active_support/proxy_object.rb +2 -0
  148. data/lib/active_support/railtie.rb +33 -21
  149. data/lib/active_support/reloader.rb +12 -4
  150. data/lib/active_support/rescuable.rb +2 -0
  151. data/lib/active_support/secure_compare_rotator.rb +16 -9
  152. data/lib/active_support/string_inquirer.rb +3 -1
  153. data/lib/active_support/subscriber.rb +9 -27
  154. data/lib/active_support/syntax_error_proxy.rb +70 -0
  155. data/lib/active_support/tagged_logging.rb +60 -24
  156. data/lib/active_support/test_case.rb +153 -6
  157. data/lib/active_support/testing/assertions.rb +26 -10
  158. data/lib/active_support/testing/autorun.rb +0 -2
  159. data/lib/active_support/testing/constant_stubbing.rb +32 -0
  160. data/lib/active_support/testing/deprecation.rb +25 -25
  161. data/lib/active_support/testing/error_reporter_assertions.rb +107 -0
  162. data/lib/active_support/testing/isolation.rb +29 -28
  163. data/lib/active_support/testing/method_call_assertions.rb +21 -8
  164. data/lib/active_support/testing/parallelize_executor.rb +8 -3
  165. data/lib/active_support/testing/stream.rb +1 -1
  166. data/lib/active_support/testing/strict_warnings.rb +39 -0
  167. data/lib/active_support/testing/time_helpers.rb +37 -15
  168. data/lib/active_support/time_with_zone.rb +8 -37
  169. data/lib/active_support/values/time_zone.rb +9 -7
  170. data/lib/active_support/version.rb +1 -1
  171. data/lib/active_support/xml_mini/jdom.rb +3 -10
  172. data/lib/active_support/xml_mini/nokogiri.rb +1 -1
  173. data/lib/active_support/xml_mini/nokogirisax.rb +1 -1
  174. data/lib/active_support/xml_mini/rexml.rb +1 -1
  175. data/lib/active_support/xml_mini.rb +2 -2
  176. data/lib/active_support.rb +14 -3
  177. metadata +103 -16
  178. data/lib/active_support/core_ext/array/deprecated_conversions.rb +0 -25
  179. data/lib/active_support/core_ext/date/deprecated_conversions.rb +0 -26
  180. data/lib/active_support/core_ext/date_time/deprecated_conversions.rb +0 -22
  181. data/lib/active_support/core_ext/numeric/deprecated_conversions.rb +0 -60
  182. data/lib/active_support/core_ext/range/deprecated_conversions.rb +0 -26
  183. data/lib/active_support/core_ext/range/include_time_with_zone.rb +0 -7
  184. data/lib/active_support/core_ext/range/overlaps.rb +0 -10
  185. data/lib/active_support/core_ext/time/deprecated_conversions.rb +0 -22
  186. data/lib/active_support/core_ext/uri.rb +0 -5
  187. data/lib/active_support/per_thread_registry.rb +0 -65
@@ -5,6 +5,8 @@ require "active_support/core_ext/string/inflections"
5
5
  module ActiveSupport
6
6
  module Cache
7
7
  module Strategy
8
+ # = Local \Cache \Strategy
9
+ #
8
10
  # Caches that implement LocalCache will be backed by an in-memory cache for the
9
11
  # duration of a block. Repeated calls to the cache for the same key will hit the
10
12
  # in-memory cache for faster access.
@@ -26,6 +28,8 @@ module ActiveSupport
26
28
  end
27
29
  end
28
30
 
31
+ # = Local \Cache \Store
32
+ #
29
33
  # Simple memory backed cache. This cache is not thread safe and is intended only
30
34
  # for serving as a temporary memory cache for a single thread.
31
35
  class LocalStore
@@ -72,35 +76,43 @@ module ActiveSupport
72
76
  local_cache_key)
73
77
  end
74
78
 
75
- def clear(**options) # :nodoc:
79
+ def clear(options = nil) # :nodoc:
76
80
  return super unless cache = local_cache
77
81
  cache.clear(options)
78
82
  super
79
83
  end
80
84
 
81
- def cleanup(**options) # :nodoc:
85
+ def cleanup(options = nil) # :nodoc:
82
86
  return super unless cache = local_cache
83
- cache.clear
87
+ cache.clear(options)
84
88
  super
85
89
  end
86
90
 
87
91
  def delete_matched(matcher, options = nil) # :nodoc:
88
92
  return super unless cache = local_cache
89
- cache.clear
93
+ cache.clear(options)
90
94
  super
91
95
  end
92
96
 
93
- def increment(name, amount = 1, **options) # :nodoc:
97
+ def increment(name, amount = 1, options = nil) # :nodoc:
94
98
  return super unless local_cache
95
99
  value = bypass_local_cache { super }
96
- write_cache_value(name, value, raw: true, **options)
100
+ if options
101
+ write_cache_value(name, value, raw: true, **options)
102
+ else
103
+ write_cache_value(name, value, raw: true)
104
+ end
97
105
  value
98
106
  end
99
107
 
100
- def decrement(name, amount = 1, **options) # :nodoc:
108
+ def decrement(name, amount = 1, options = nil) # :nodoc:
101
109
  return super unless local_cache
102
110
  value = bypass_local_cache { super }
103
- write_cache_value(name, value, raw: true, **options)
111
+ if options
112
+ write_cache_value(name, value, raw: true, **options)
113
+ else
114
+ write_cache_value(name, value, raw: true)
115
+ end
104
116
  value
105
117
  end
106
118
 
@@ -119,17 +131,20 @@ module ActiveSupport
119
131
  end
120
132
  end
121
133
 
122
- def read_multi_entries(keys, **options)
134
+ def read_multi_entries(names, **options)
123
135
  return super unless local_cache
124
136
 
125
- local_entries = local_cache.read_multi_entries(keys)
137
+ keys_to_names = names.index_by { |name| normalize_key(name, options) }
138
+
139
+ local_entries = local_cache.read_multi_entries(keys_to_names.keys)
140
+ local_entries.transform_keys! { |key| keys_to_names[key] }
126
141
  local_entries.transform_values! do |payload|
127
- deserialize_entry(payload).value
142
+ deserialize_entry(payload, **options)&.value
128
143
  end
129
- missed_keys = keys - local_entries.keys
144
+ missed_names = names - local_entries.keys
130
145
 
131
- if missed_keys.any?
132
- local_entries.merge!(super(missed_keys, **options))
146
+ if missed_names.any?
147
+ local_entries.merge!(super(missed_names, **options))
133
148
  else
134
149
  local_entries
135
150
  end