activesupport 7.1.1 → 7.1.3.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +124 -0
- data/lib/active_support/broadcast_logger.rb +8 -0
- data/lib/active_support/cache/entry.rb +7 -1
- data/lib/active_support/cache/file_store.rb +1 -1
- data/lib/active_support/cache/mem_cache_store.rb +16 -8
- data/lib/active_support/cache/memory_store.rb +4 -4
- data/lib/active_support/cache/redis_cache_store.rb +21 -14
- data/lib/active_support/cache/strategy/local_cache.rb +9 -6
- data/lib/active_support/cache.rb +34 -7
- data/lib/active_support/core_ext/date/conversions.rb +1 -1
- data/lib/active_support/core_ext/module/concerning.rb +6 -6
- data/lib/active_support/core_ext/object/with_options.rb +1 -1
- data/lib/active_support/core_ext/string/indent.rb +1 -1
- data/lib/active_support/deprecation/behaviors.rb +18 -16
- data/lib/active_support/deprecation/reporting.rb +7 -4
- data/lib/active_support/gem_version.rb +2 -2
- data/lib/active_support/html_safe_translation.rb +12 -2
- data/lib/active_support/inflector/methods.rb +2 -2
- data/lib/active_support/json/encoding.rb +1 -1
- data/lib/active_support/log_subscriber.rb +8 -2
- data/lib/active_support/messages/metadata.rb +1 -1
- data/lib/active_support/notifications/fanout.rb +25 -19
- data/lib/active_support/number_helper/number_to_human_size_converter.rb +2 -2
- data/lib/active_support/number_helper.rb +379 -318
- data/lib/active_support/ordered_options.rb +2 -2
- data/lib/active_support/syntax_error_proxy.rb +22 -1
- data/lib/active_support/testing/assertions.rb +1 -1
- data/lib/active_support/testing/strict_warnings.rb +1 -0
- data/lib/active_support/testing/time_helpers.rb +5 -1
- metadata +6 -6
@@ -7,8 +7,18 @@ module ActiveSupport
|
|
7
7
|
def translate(key, **options)
|
8
8
|
if html_safe_translation_key?(key)
|
9
9
|
html_safe_options = html_escape_translation_options(options)
|
10
|
-
|
11
|
-
|
10
|
+
|
11
|
+
exception = false
|
12
|
+
exception_handler = ->(*args) do
|
13
|
+
exception = true
|
14
|
+
I18n.exception_handler.call(*args)
|
15
|
+
end
|
16
|
+
translation = I18n.translate(key, **html_safe_options, exception_handler: exception_handler)
|
17
|
+
if exception
|
18
|
+
translation
|
19
|
+
else
|
20
|
+
html_safe_translation(translation)
|
21
|
+
end
|
12
22
|
else
|
13
23
|
I18n.translate(key, **options)
|
14
24
|
end
|
@@ -164,7 +164,7 @@ module ActiveSupport
|
|
164
164
|
# upcase_first('w') # => "W"
|
165
165
|
# upcase_first('') # => ""
|
166
166
|
def upcase_first(string)
|
167
|
-
string.length > 0 ? string[0].upcase.concat(string[1..-1]) : ""
|
167
|
+
string.length > 0 ? string[0].upcase.concat(string[1..-1]) : +""
|
168
168
|
end
|
169
169
|
|
170
170
|
# Converts the first character in the string to lowercase.
|
@@ -173,7 +173,7 @@ module ActiveSupport
|
|
173
173
|
# downcase_first('I') # => "i"
|
174
174
|
# downcase_first('') # => ""
|
175
175
|
def downcase_first(string)
|
176
|
-
string.length > 0 ? string[0].downcase.concat(string[1..-1]) : ""
|
176
|
+
string.length > 0 ? string[0].downcase.concat(string[1..-1]) : +""
|
177
177
|
end
|
178
178
|
|
179
179
|
# Capitalizes all the words and replaces some characters in the string to
|
@@ -86,6 +86,12 @@ module ActiveSupport
|
|
86
86
|
mattr_accessor :colorize_logging, default: true
|
87
87
|
class_attribute :log_levels, instance_accessor: false, default: {} # :nodoc:
|
88
88
|
|
89
|
+
LEVEL_CHECKS = {
|
90
|
+
debug: -> (logger) { !logger.debug? },
|
91
|
+
info: -> (logger) { !logger.info? },
|
92
|
+
error: -> (logger) { !logger.error? },
|
93
|
+
}
|
94
|
+
|
89
95
|
class << self
|
90
96
|
def logger
|
91
97
|
@logger ||= if defined?(Rails) && Rails.respond_to?(:logger)
|
@@ -122,7 +128,7 @@ module ActiveSupport
|
|
122
128
|
end
|
123
129
|
|
124
130
|
def subscribe_log_level(method, level)
|
125
|
-
self.log_levels = log_levels.merge(method =>
|
131
|
+
self.log_levels = log_levels.merge(method => LEVEL_CHECKS.fetch(level))
|
126
132
|
set_event_levels
|
127
133
|
end
|
128
134
|
end
|
@@ -137,7 +143,7 @@ module ActiveSupport
|
|
137
143
|
end
|
138
144
|
|
139
145
|
def silenced?(event)
|
140
|
-
logger.nil? ||
|
146
|
+
logger.nil? || @event_levels[event]&.call(logger)
|
141
147
|
end
|
142
148
|
|
143
149
|
def call(event)
|
@@ -18,26 +18,30 @@ module ActiveSupport
|
|
18
18
|
end
|
19
19
|
|
20
20
|
module FanoutIteration # :nodoc:
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
listeners.each do |s|
|
25
|
-
yield s
|
26
|
-
rescue Exception => e
|
27
|
-
exceptions ||= []
|
28
|
-
exceptions << e
|
29
|
-
end
|
21
|
+
private
|
22
|
+
def iterate_guarding_exceptions(collection)
|
23
|
+
exceptions = nil
|
30
24
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
25
|
+
collection.each do |s|
|
26
|
+
yield s
|
27
|
+
rescue Exception => e
|
28
|
+
exceptions ||= []
|
29
|
+
exceptions << e
|
36
30
|
end
|
37
|
-
end
|
38
31
|
|
39
|
-
|
40
|
-
|
32
|
+
if exceptions
|
33
|
+
exceptions = exceptions.flat_map do |exception|
|
34
|
+
exception.is_a?(InstrumentationSubscriberError) ? exception.exceptions : [exception]
|
35
|
+
end
|
36
|
+
if exceptions.size == 1
|
37
|
+
raise exceptions.first
|
38
|
+
else
|
39
|
+
raise InstrumentationSubscriberError.new(exceptions), cause: exceptions.first
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
collection
|
44
|
+
end
|
41
45
|
end
|
42
46
|
|
43
47
|
# This is a default queue implementation that ships with Notifications.
|
@@ -225,6 +229,8 @@ module ActiveSupport
|
|
225
229
|
# handle.finish
|
226
230
|
# end
|
227
231
|
class Handle
|
232
|
+
include FanoutIteration
|
233
|
+
|
228
234
|
def initialize(notifier, name, id, payload) # :nodoc:
|
229
235
|
@name = name
|
230
236
|
@id = id
|
@@ -239,7 +245,7 @@ module ActiveSupport
|
|
239
245
|
ensure_state! :initialized
|
240
246
|
@state = :started
|
241
247
|
|
242
|
-
@groups
|
248
|
+
iterate_guarding_exceptions(@groups) do |group|
|
243
249
|
group.start(@name, @id, @payload)
|
244
250
|
end
|
245
251
|
end
|
@@ -252,7 +258,7 @@ module ActiveSupport
|
|
252
258
|
ensure_state! :started
|
253
259
|
@state = :finished
|
254
260
|
|
255
|
-
@groups
|
261
|
+
iterate_guarding_exceptions(@groups) do |group|
|
256
262
|
group.finish(name, id, payload)
|
257
263
|
end
|
258
264
|
end
|
@@ -43,13 +43,13 @@ module ActiveSupport
|
|
43
43
|
|
44
44
|
def exponent
|
45
45
|
max = STORAGE_UNITS.size - 1
|
46
|
-
exp = (Math.log(number) / Math.log(base)).to_i
|
46
|
+
exp = (Math.log(number.abs) / Math.log(base)).to_i
|
47
47
|
exp = max if exp > max # avoid overflow for the highest unit
|
48
48
|
exp
|
49
49
|
end
|
50
50
|
|
51
51
|
def smaller_than_base?
|
52
|
-
number.to_i < base
|
52
|
+
number.to_i.abs < base
|
53
53
|
end
|
54
54
|
|
55
55
|
def base
|