activesupport 7.1.5.2 → 8.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +72 -1221
- data/lib/active_support/array_inquirer.rb +1 -1
- data/lib/active_support/backtrace_cleaner.rb +10 -3
- data/lib/active_support/benchmark.rb +21 -0
- data/lib/active_support/benchmarkable.rb +3 -2
- data/lib/active_support/broadcast_logger.rb +4 -4
- data/lib/active_support/cache/file_store.rb +27 -12
- data/lib/active_support/cache/mem_cache_store.rb +16 -74
- data/lib/active_support/cache/memory_store.rb +8 -3
- data/lib/active_support/cache/redis_cache_store.rb +21 -15
- data/lib/active_support/cache/serializer_with_fallback.rb +0 -23
- data/lib/active_support/cache.rb +74 -77
- data/lib/active_support/callbacks.rb +79 -116
- data/lib/active_support/class_attribute.rb +33 -0
- data/lib/active_support/code_generator.rb +9 -0
- data/lib/active_support/concurrency/share_lock.rb +0 -1
- data/lib/active_support/configuration_file.rb +15 -6
- data/lib/active_support/core_ext/array/conversions.rb +3 -5
- data/lib/active_support/core_ext/benchmark.rb +6 -9
- data/lib/active_support/core_ext/class/attribute.rb +24 -20
- data/lib/active_support/core_ext/class/subclasses.rb +15 -35
- data/lib/active_support/core_ext/date/blank.rb +4 -0
- data/lib/active_support/core_ext/date/conversions.rb +2 -2
- data/lib/active_support/core_ext/date_and_time/compatibility.rb +28 -1
- data/lib/active_support/core_ext/date_time/blank.rb +4 -0
- data/lib/active_support/core_ext/date_time/conversions.rb +0 -4
- data/lib/active_support/core_ext/digest/uuid.rb +6 -0
- data/lib/active_support/core_ext/enumerable.rb +8 -3
- data/lib/active_support/core_ext/erb/util.rb +7 -2
- data/lib/active_support/core_ext/hash/except.rb +0 -12
- data/lib/active_support/core_ext/hash/keys.rb +4 -4
- data/lib/active_support/core_ext/module/attr_internal.rb +16 -6
- data/lib/active_support/core_ext/module/delegation.rb +20 -163
- data/lib/active_support/core_ext/module/deprecation.rb +1 -4
- data/lib/active_support/core_ext/numeric/conversions.rb +3 -3
- data/lib/active_support/core_ext/object/blank.rb +45 -1
- data/lib/active_support/core_ext/object/instance_variables.rb +11 -19
- data/lib/active_support/core_ext/object/json.rb +16 -10
- data/lib/active_support/core_ext/object/with.rb +5 -3
- data/lib/active_support/core_ext/pathname/blank.rb +4 -0
- data/lib/active_support/core_ext/range/overlap.rb +1 -1
- data/lib/active_support/core_ext/securerandom.rb +4 -4
- data/lib/active_support/core_ext/string/conversions.rb +1 -1
- data/lib/active_support/core_ext/string/filters.rb +1 -1
- data/lib/active_support/core_ext/string/multibyte.rb +1 -1
- data/lib/active_support/core_ext/string/output_safety.rb +0 -7
- data/lib/active_support/core_ext/thread/backtrace/location.rb +2 -7
- data/lib/active_support/core_ext/time/calculations.rb +32 -30
- data/lib/active_support/core_ext/time/compatibility.rb +24 -0
- data/lib/active_support/core_ext/time/conversions.rb +2 -2
- data/lib/active_support/core_ext/time/zones.rb +1 -1
- data/lib/active_support/core_ext.rb +0 -1
- data/lib/active_support/current_attributes.rb +38 -40
- data/lib/active_support/delegation.rb +200 -0
- data/lib/active_support/dependencies/autoload.rb +0 -12
- data/lib/active_support/dependencies.rb +0 -1
- data/lib/active_support/deprecation/constant_accessor.rb +47 -26
- data/lib/active_support/deprecation/proxy_wrappers.rb +9 -12
- data/lib/active_support/deprecation/reporting.rb +1 -15
- data/lib/active_support/deprecation.rb +8 -5
- data/lib/active_support/descendants_tracker.rb +9 -87
- data/lib/active_support/duration/iso8601_parser.rb +2 -2
- data/lib/active_support/duration/iso8601_serializer.rb +1 -2
- data/lib/active_support/duration.rb +25 -16
- data/lib/active_support/encrypted_configuration.rb +20 -2
- data/lib/active_support/encrypted_file.rb +1 -1
- data/lib/active_support/error_reporter.rb +65 -3
- data/lib/active_support/evented_file_update_checker.rb +0 -2
- data/lib/active_support/execution_wrapper.rb +0 -1
- data/lib/active_support/file_update_checker.rb +1 -1
- data/lib/active_support/fork_tracker.rb +2 -38
- data/lib/active_support/gem_version.rb +4 -4
- data/lib/active_support/hash_with_indifferent_access.rb +21 -23
- data/lib/active_support/html_safe_translation.rb +3 -0
- data/lib/active_support/i18n_railtie.rb +19 -11
- data/lib/active_support/isolated_execution_state.rb +0 -2
- data/lib/active_support/json/encoding.rb +2 -2
- data/lib/active_support/log_subscriber.rb +0 -12
- data/lib/active_support/logger.rb +15 -2
- data/lib/active_support/logger_thread_safe_level.rb +0 -8
- data/lib/active_support/message_pack/extensions.rb +15 -2
- data/lib/active_support/message_verifier.rb +12 -0
- data/lib/active_support/multibyte/chars.rb +2 -2
- data/lib/active_support/notifications/fanout.rb +4 -8
- data/lib/active_support/notifications/instrumenter.rb +21 -18
- data/lib/active_support/notifications.rb +28 -27
- data/lib/active_support/number_helper/number_converter.rb +2 -2
- data/lib/active_support/number_helper.rb +22 -0
- data/lib/active_support/option_merger.rb +2 -2
- data/lib/active_support/ordered_options.rb +53 -15
- data/lib/active_support/railtie.rb +8 -11
- data/lib/active_support/string_inquirer.rb +1 -1
- data/lib/active_support/subscriber.rb +1 -0
- data/lib/active_support/tagged_logging.rb +5 -1
- data/lib/active_support/test_case.rb +3 -1
- data/lib/active_support/testing/assertions.rb +79 -21
- data/lib/active_support/testing/constant_stubbing.rb +30 -8
- data/lib/active_support/testing/deprecation.rb +5 -12
- data/lib/active_support/testing/isolation.rb +19 -9
- data/lib/active_support/testing/method_call_assertions.rb +2 -16
- data/lib/active_support/testing/parallelization/server.rb +3 -0
- data/lib/active_support/testing/strict_warnings.rb +8 -4
- data/lib/active_support/testing/tests_without_assertions.rb +19 -0
- data/lib/active_support/testing/time_helpers.rb +4 -3
- data/lib/active_support/time_with_zone.rb +30 -17
- data/lib/active_support/values/time_zone.rb +18 -16
- data/lib/active_support/xml_mini.rb +11 -2
- data/lib/active_support.rb +11 -3
- metadata +32 -22
- data/lib/active_support/deprecation/instance_delegator.rb +0 -65
- data/lib/active_support/proxy_object.rb +0 -17
- data/lib/active_support/ruby_features.rb +0 -7
|
@@ -85,7 +85,7 @@ module ActiveSupport
|
|
|
85
85
|
end
|
|
86
86
|
alias_method :getlocal, :localtime
|
|
87
87
|
|
|
88
|
-
# Returns true if the current time is within Daylight Savings Time for the
|
|
88
|
+
# Returns true if the current time is within Daylight Savings \Time for the
|
|
89
89
|
# specified time zone.
|
|
90
90
|
#
|
|
91
91
|
# Time.zone = 'Eastern Time (US & Canada)' # => 'Eastern Time (US & Canada)'
|
|
@@ -136,9 +136,9 @@ module ActiveSupport
|
|
|
136
136
|
|
|
137
137
|
# Returns a string of the object's date, time, zone, and offset from UTC.
|
|
138
138
|
#
|
|
139
|
-
# Time.zone.now.inspect # => "
|
|
139
|
+
# Time.zone.now.inspect # => "2024-11-13 07:00:10.528054960 UTC +00:00"
|
|
140
140
|
def inspect
|
|
141
|
-
"#{time.strftime('%
|
|
141
|
+
"#{time.strftime('%F %H:%M:%S.%9N')} #{zone} #{formatted_offset}"
|
|
142
142
|
end
|
|
143
143
|
|
|
144
144
|
# Returns a string of the object's date and time in the ISO 8601 standard
|
|
@@ -157,11 +157,11 @@ module ActiveSupport
|
|
|
157
157
|
# to +false+.
|
|
158
158
|
#
|
|
159
159
|
# # With ActiveSupport::JSON::Encoding.use_standard_json_time_format = true
|
|
160
|
-
# Time.utc(2005,2,1,15,15,10).in_time_zone("Hawaii").
|
|
160
|
+
# Time.utc(2005,2,1,15,15,10).in_time_zone("Hawaii").as_json
|
|
161
161
|
# # => "2005-02-01T05:15:10.000-10:00"
|
|
162
162
|
#
|
|
163
163
|
# # With ActiveSupport::JSON::Encoding.use_standard_json_time_format = false
|
|
164
|
-
# Time.utc(2005,2,1,15,15,10).in_time_zone("Hawaii").
|
|
164
|
+
# Time.utc(2005,2,1,15,15,10).in_time_zone("Hawaii").as_json
|
|
165
165
|
# # => "2005/02/01 05:15:10 -1000"
|
|
166
166
|
def as_json(options = nil)
|
|
167
167
|
if ActiveSupport::JSON::Encoding.use_standard_json_time_format
|
|
@@ -215,8 +215,7 @@ module ActiveSupport
|
|
|
215
215
|
elsif formatter = ::Time::DATE_FORMATS[format]
|
|
216
216
|
formatter.respond_to?(:call) ? formatter.call(self).to_s : strftime(formatter)
|
|
217
217
|
else
|
|
218
|
-
|
|
219
|
-
"#{time.strftime("%Y-%m-%d %H:%M:%S")} #{formatted_offset(false, 'UTC')}"
|
|
218
|
+
to_s
|
|
220
219
|
end
|
|
221
220
|
end
|
|
222
221
|
alias_method :to_formatted_s, :to_fs
|
|
@@ -300,7 +299,16 @@ module ActiveSupport
|
|
|
300
299
|
if duration_of_variable_length?(other)
|
|
301
300
|
method_missing(:+, other)
|
|
302
301
|
else
|
|
303
|
-
|
|
302
|
+
begin
|
|
303
|
+
result = utc + other
|
|
304
|
+
rescue TypeError
|
|
305
|
+
result = utc.to_datetime.since(other)
|
|
306
|
+
ActiveSupport.deprecator.warn(
|
|
307
|
+
"Adding an instance of #{other.class} to an instance of #{self.class} is deprecated. This behavior will raise " \
|
|
308
|
+
"a `TypeError` in Rails 8.1."
|
|
309
|
+
)
|
|
310
|
+
result.in_time_zone(time_zone)
|
|
311
|
+
end
|
|
304
312
|
result.in_time_zone(time_zone)
|
|
305
313
|
end
|
|
306
314
|
end
|
|
@@ -332,11 +340,11 @@ module ActiveSupport
|
|
|
332
340
|
#
|
|
333
341
|
def -(other)
|
|
334
342
|
if other.acts_like?(:time)
|
|
335
|
-
|
|
343
|
+
getutc - other.getutc
|
|
336
344
|
elsif duration_of_variable_length?(other)
|
|
337
345
|
method_missing(:-, other)
|
|
338
346
|
else
|
|
339
|
-
result = utc
|
|
347
|
+
result = utc - other
|
|
340
348
|
result.in_time_zone(time_zone)
|
|
341
349
|
end
|
|
342
350
|
end
|
|
@@ -375,8 +383,8 @@ module ActiveSupport
|
|
|
375
383
|
#
|
|
376
384
|
# t = Time.zone.now # => Fri, 14 Apr 2017 11:45:15.116992711 EST -05:00
|
|
377
385
|
# t.change(year: 2020) # => Tue, 14 Apr 2020 11:45:15.116992711 EST -05:00
|
|
378
|
-
# t.change(hour: 12) # => Fri, 14 Apr 2017 12:00:00.
|
|
379
|
-
# t.change(min: 30) # => Fri, 14 Apr 2017 11:30:00.
|
|
386
|
+
# t.change(hour: 12) # => Fri, 14 Apr 2017 12:00:00.000000000 EST -05:00
|
|
387
|
+
# t.change(min: 30) # => Fri, 14 Apr 2017 11:30:00.000000000 EST -05:00
|
|
380
388
|
# t.change(offset: "-10:00") # => Fri, 14 Apr 2017 11:45:15.116992711 HST -10:00
|
|
381
389
|
# t.change(zone: "Hawaii") # => Fri, 14 Apr 2017 11:45:15.116992711 HST -10:00
|
|
382
390
|
def change(options)
|
|
@@ -479,11 +487,13 @@ module ActiveSupport
|
|
|
479
487
|
@to_datetime ||= utc.to_datetime.new_offset(Rational(utc_offset, 86_400))
|
|
480
488
|
end
|
|
481
489
|
|
|
482
|
-
# Returns an instance of +Time+, either with the same
|
|
483
|
-
# as +self+ or in the local system timezone
|
|
484
|
-
# of +ActiveSupport.to_time_preserves_timezone+.
|
|
490
|
+
# Returns an instance of +Time+, either with the same timezone as +self+,
|
|
491
|
+
# with the same UTC offset as +self+ or in the local system timezone
|
|
492
|
+
# depending on the setting of +ActiveSupport.to_time_preserves_timezone+.
|
|
485
493
|
def to_time
|
|
486
|
-
if preserve_timezone
|
|
494
|
+
if preserve_timezone == :zone
|
|
495
|
+
@to_time_with_timezone ||= getlocal(time_zone)
|
|
496
|
+
elsif preserve_timezone
|
|
487
497
|
@to_time_with_instance_offset ||= getlocal(utc_offset)
|
|
488
498
|
else
|
|
489
499
|
@to_time_with_system_offset ||= getlocal
|
|
@@ -506,6 +516,10 @@ module ActiveSupport
|
|
|
506
516
|
false
|
|
507
517
|
end
|
|
508
518
|
|
|
519
|
+
def present? # :nodoc:
|
|
520
|
+
true
|
|
521
|
+
end
|
|
522
|
+
|
|
509
523
|
def freeze
|
|
510
524
|
# preload instance variables before freezing
|
|
511
525
|
period; utc; time; to_datetime; to_time
|
|
@@ -531,7 +545,6 @@ module ActiveSupport
|
|
|
531
545
|
# Ensure proxy class responds to all methods that underlying time instance
|
|
532
546
|
# responds to.
|
|
533
547
|
def respond_to_missing?(sym, include_priv)
|
|
534
|
-
return false if sym.to_sym == :acts_like_date?
|
|
535
548
|
time.respond_to?(sym, include_priv)
|
|
536
549
|
end
|
|
537
550
|
|
|
@@ -12,7 +12,7 @@ module ActiveSupport
|
|
|
12
12
|
# * Limit the set of zones provided by TZInfo to a meaningful subset of 134
|
|
13
13
|
# zones.
|
|
14
14
|
# * Retrieve and display zones with a friendlier name
|
|
15
|
-
# (e.g., "Eastern Time (US & Canada)" instead of "America/New_York").
|
|
15
|
+
# (e.g., "Eastern \Time (US & Canada)" instead of "America/New_York").
|
|
16
16
|
# * Lazily load +TZInfo::Timezone+ instances only when they're needed.
|
|
17
17
|
# * Create ActiveSupport::TimeWithZone instances via TimeZone's +local+,
|
|
18
18
|
# +parse+, +at+, and +now+ methods.
|
|
@@ -134,10 +134,10 @@ module ActiveSupport
|
|
|
134
134
|
"Mumbai" => "Asia/Kolkata",
|
|
135
135
|
"New Delhi" => "Asia/Kolkata",
|
|
136
136
|
"Kathmandu" => "Asia/Kathmandu",
|
|
137
|
-
"Astana" => "Asia/Dhaka",
|
|
138
137
|
"Dhaka" => "Asia/Dhaka",
|
|
139
138
|
"Sri Jayawardenepura" => "Asia/Colombo",
|
|
140
139
|
"Almaty" => "Asia/Almaty",
|
|
140
|
+
"Astana" => "Asia/Almaty",
|
|
141
141
|
"Novosibirsk" => "Asia/Novosibirsk",
|
|
142
142
|
"Rangoon" => "Asia/Rangoon",
|
|
143
143
|
"Bangkok" => "Asia/Bangkok",
|
|
@@ -208,9 +208,7 @@ module ActiveSupport
|
|
|
208
208
|
TZInfo::Timezone.get(MAPPING[name] || name)
|
|
209
209
|
end
|
|
210
210
|
|
|
211
|
-
# :
|
|
212
|
-
alias_method :create, :new
|
|
213
|
-
# :startdoc:
|
|
211
|
+
alias_method :create, :new # :nodoc:
|
|
214
212
|
|
|
215
213
|
# Returns a TimeZone instance with the given name, or +nil+ if no
|
|
216
214
|
# such TimeZone instance exists. (This exists to support the use of
|
|
@@ -357,7 +355,7 @@ module ActiveSupport
|
|
|
357
355
|
"(GMT#{formatted_offset}) #{name}"
|
|
358
356
|
end
|
|
359
357
|
|
|
360
|
-
# Method for creating new ActiveSupport::TimeWithZone instance in time zone
|
|
358
|
+
# \Method for creating new ActiveSupport::TimeWithZone instance in time zone
|
|
361
359
|
# of +self+ from given values.
|
|
362
360
|
#
|
|
363
361
|
# Time.zone = 'Hawaii' # => "Hawaii"
|
|
@@ -367,7 +365,7 @@ module ActiveSupport
|
|
|
367
365
|
ActiveSupport::TimeWithZone.new(nil, self, time)
|
|
368
366
|
end
|
|
369
367
|
|
|
370
|
-
# Method for creating new ActiveSupport::TimeWithZone instance in time zone
|
|
368
|
+
# \Method for creating new ActiveSupport::TimeWithZone instance in time zone
|
|
371
369
|
# of +self+ from number of seconds since the Unix epoch.
|
|
372
370
|
#
|
|
373
371
|
# Time.zone = 'Hawaii' # => "Hawaii"
|
|
@@ -382,7 +380,7 @@ module ActiveSupport
|
|
|
382
380
|
Time.at(*args).utc.in_time_zone(self)
|
|
383
381
|
end
|
|
384
382
|
|
|
385
|
-
# Method for creating new ActiveSupport::TimeWithZone instance in time zone
|
|
383
|
+
# \Method for creating new ActiveSupport::TimeWithZone instance in time zone
|
|
386
384
|
# of +self+ from an ISO 8601 string.
|
|
387
385
|
#
|
|
388
386
|
# Time.zone = 'Hawaii' # => "Hawaii"
|
|
@@ -434,7 +432,7 @@ module ActiveSupport
|
|
|
434
432
|
raise ArgumentError, "invalid date"
|
|
435
433
|
end
|
|
436
434
|
|
|
437
|
-
# Method for creating new ActiveSupport::TimeWithZone instance in time zone
|
|
435
|
+
# \Method for creating new ActiveSupport::TimeWithZone instance in time zone
|
|
438
436
|
# of +self+ from parsed string.
|
|
439
437
|
#
|
|
440
438
|
# Time.zone = 'Hawaii' # => "Hawaii"
|
|
@@ -456,7 +454,7 @@ module ActiveSupport
|
|
|
456
454
|
parts_to_time(Date._parse(str, false), now)
|
|
457
455
|
end
|
|
458
456
|
|
|
459
|
-
# Method for creating new ActiveSupport::TimeWithZone instance in time zone
|
|
457
|
+
# \Method for creating new ActiveSupport::TimeWithZone instance in time zone
|
|
460
458
|
# of +self+ from an RFC 3339 string.
|
|
461
459
|
#
|
|
462
460
|
# Time.zone = 'Hawaii' # => "Hawaii"
|
|
@@ -554,15 +552,11 @@ module ActiveSupport
|
|
|
554
552
|
tzinfo.local_to_utc(time, dst)
|
|
555
553
|
end
|
|
556
554
|
|
|
557
|
-
|
|
558
|
-
# instances.
|
|
559
|
-
def period_for_utc(time)
|
|
555
|
+
def period_for_utc(time) # :nodoc:
|
|
560
556
|
tzinfo.period_for_utc(time)
|
|
561
557
|
end
|
|
562
558
|
|
|
563
|
-
|
|
564
|
-
# instances.
|
|
565
|
-
def period_for_local(time, dst = true)
|
|
559
|
+
def period_for_local(time, dst = true) # :nodoc:
|
|
566
560
|
tzinfo.period_for_local(time, dst) { |periods| periods.last }
|
|
567
561
|
end
|
|
568
562
|
|
|
@@ -570,6 +564,14 @@ module ActiveSupport
|
|
|
570
564
|
tzinfo.periods_for_local(time)
|
|
571
565
|
end
|
|
572
566
|
|
|
567
|
+
def abbr(time) # :nodoc:
|
|
568
|
+
tzinfo.abbr(time)
|
|
569
|
+
end
|
|
570
|
+
|
|
571
|
+
def dst?(time) # :nodoc:
|
|
572
|
+
tzinfo.dst?(time)
|
|
573
|
+
end
|
|
574
|
+
|
|
573
575
|
def init_with(coder) # :nodoc:
|
|
574
576
|
initialize(coder["name"])
|
|
575
577
|
end
|
|
@@ -12,7 +12,7 @@ module ActiveSupport
|
|
|
12
12
|
# = \XmlMini
|
|
13
13
|
#
|
|
14
14
|
# To use the much faster libxml parser:
|
|
15
|
-
# gem
|
|
15
|
+
# gem "libxml-ruby"
|
|
16
16
|
# XmlMini.backend = 'LibXML'
|
|
17
17
|
module XmlMini
|
|
18
18
|
extend self
|
|
@@ -46,6 +46,7 @@ module ActiveSupport
|
|
|
46
46
|
"Date" => "date",
|
|
47
47
|
"DateTime" => "dateTime",
|
|
48
48
|
"Time" => "dateTime",
|
|
49
|
+
"ActiveSupport::Duration" => "duration",
|
|
49
50
|
"Array" => "array",
|
|
50
51
|
"Hash" => "hash"
|
|
51
52
|
}
|
|
@@ -56,6 +57,7 @@ module ActiveSupport
|
|
|
56
57
|
"symbol" => Proc.new { |symbol| symbol.to_s },
|
|
57
58
|
"date" => Proc.new { |date| date.to_fs(:db) },
|
|
58
59
|
"dateTime" => Proc.new { |time| time.xmlschema },
|
|
60
|
+
"duration" => Proc.new { |duration| duration.iso8601 },
|
|
59
61
|
"binary" => Proc.new { |binary| ::Base64.encode64(binary) },
|
|
60
62
|
"yaml" => Proc.new { |yaml| yaml.to_yaml }
|
|
61
63
|
} unless defined?(FORMATTING)
|
|
@@ -66,6 +68,7 @@ module ActiveSupport
|
|
|
66
68
|
"symbol" => Proc.new { |symbol| symbol.to_s.to_sym },
|
|
67
69
|
"date" => Proc.new { |date| ::Date.parse(date) },
|
|
68
70
|
"datetime" => Proc.new { |time| Time.xmlschema(time).utc rescue ::DateTime.parse(time).utc },
|
|
71
|
+
"duration" => Proc.new { |duration| Duration.parse(duration) },
|
|
69
72
|
"integer" => Proc.new { |integer| integer.to_i },
|
|
70
73
|
"float" => Proc.new { |float| float.to_f },
|
|
71
74
|
"decimal" => Proc.new do |number|
|
|
@@ -79,6 +82,7 @@ module ActiveSupport
|
|
|
79
82
|
"string" => Proc.new { |string| string.to_s },
|
|
80
83
|
"yaml" => Proc.new { |yaml| YAML.load(yaml) rescue yaml },
|
|
81
84
|
"base64Binary" => Proc.new { |bin| ::Base64.decode64(bin) },
|
|
85
|
+
"hexBinary" => Proc.new { |bin| _parse_hex_binary(bin) },
|
|
82
86
|
"binary" => Proc.new { |bin, entity| _parse_binary(bin, entity) },
|
|
83
87
|
"file" => Proc.new { |file, entity| _parse_file(file, entity) }
|
|
84
88
|
}
|
|
@@ -162,11 +166,12 @@ module ActiveSupport
|
|
|
162
166
|
"#{left}#{middle.tr('_ ', '--')}#{right}"
|
|
163
167
|
end
|
|
164
168
|
|
|
165
|
-
# TODO: Add support for other encodings
|
|
166
169
|
def _parse_binary(bin, entity)
|
|
167
170
|
case entity["encoding"]
|
|
168
171
|
when "base64"
|
|
169
172
|
::Base64.decode64(bin)
|
|
173
|
+
when "hex", "hexBinary"
|
|
174
|
+
_parse_hex_binary(bin)
|
|
170
175
|
else
|
|
171
176
|
bin
|
|
172
177
|
end
|
|
@@ -180,6 +185,10 @@ module ActiveSupport
|
|
|
180
185
|
f
|
|
181
186
|
end
|
|
182
187
|
|
|
188
|
+
def _parse_hex_binary(bin)
|
|
189
|
+
[bin].pack("H*")
|
|
190
|
+
end
|
|
191
|
+
|
|
183
192
|
def current_thread_backend
|
|
184
193
|
IsolatedExecutionState[:xml_mini_backend]
|
|
185
194
|
end
|
data/lib/active_support.rb
CHANGED
|
@@ -57,12 +57,14 @@ module ActiveSupport
|
|
|
57
57
|
|
|
58
58
|
eager_autoload do
|
|
59
59
|
autoload :BacktraceCleaner
|
|
60
|
-
autoload :
|
|
60
|
+
autoload :Benchmark
|
|
61
61
|
autoload :Benchmarkable
|
|
62
62
|
autoload :Cache
|
|
63
63
|
autoload :Callbacks
|
|
64
64
|
autoload :Configurable
|
|
65
|
+
autoload :ClassAttribute
|
|
65
66
|
autoload :Deprecation
|
|
67
|
+
autoload :Delegation
|
|
66
68
|
autoload :Digest
|
|
67
69
|
autoload :ExecutionContext
|
|
68
70
|
autoload :Gzip
|
|
@@ -114,9 +116,15 @@ module ActiveSupport
|
|
|
114
116
|
end
|
|
115
117
|
|
|
116
118
|
def self.to_time_preserves_timezone=(value)
|
|
117
|
-
|
|
119
|
+
if !value
|
|
118
120
|
ActiveSupport.deprecator.warn(
|
|
119
|
-
"
|
|
121
|
+
"`to_time` will always preserve the receiver timezone rather than system local time in Rails 8.1. " \
|
|
122
|
+
"To opt in to the new behavior, set `config.active_support.to_time_preserves_timezone = :zone`."
|
|
123
|
+
)
|
|
124
|
+
elsif value != :zone
|
|
125
|
+
ActiveSupport.deprecator.warn(
|
|
126
|
+
"`to_time` will always preserve the full timezone rather than offset of the receiver in Rails 8.1. " \
|
|
127
|
+
"To opt in to the new behavior, set `config.active_support.to_time_preserves_timezone = :zone`."
|
|
120
128
|
)
|
|
121
129
|
end
|
|
122
130
|
|
metadata
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: activesupport
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 8.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- David Heinemeier Hansson
|
|
8
|
+
autorequire:
|
|
8
9
|
bindir: bin
|
|
9
10
|
cert_chain: []
|
|
10
|
-
date:
|
|
11
|
+
date: 2024-12-13 00:00:00.000000000 Z
|
|
11
12
|
dependencies:
|
|
12
13
|
- !ruby/object:Gem::Dependency
|
|
13
14
|
name: i18n
|
|
@@ -36,6 +37,9 @@ dependencies:
|
|
|
36
37
|
- - "~>"
|
|
37
38
|
- !ruby/object:Gem::Version
|
|
38
39
|
version: '2.0'
|
|
40
|
+
- - ">="
|
|
41
|
+
- !ruby/object:Gem::Version
|
|
42
|
+
version: 2.0.5
|
|
39
43
|
type: :runtime
|
|
40
44
|
prerelease: false
|
|
41
45
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -43,6 +47,9 @@ dependencies:
|
|
|
43
47
|
- - "~>"
|
|
44
48
|
- !ruby/object:Gem::Version
|
|
45
49
|
version: '2.0'
|
|
50
|
+
- - ">="
|
|
51
|
+
- !ruby/object:Gem::Version
|
|
52
|
+
version: 2.0.5
|
|
46
53
|
- !ruby/object:Gem::Dependency
|
|
47
54
|
name: concurrent-ruby
|
|
48
55
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -52,7 +59,7 @@ dependencies:
|
|
|
52
59
|
version: '1.0'
|
|
53
60
|
- - ">="
|
|
54
61
|
- !ruby/object:Gem::Version
|
|
55
|
-
version: 1.
|
|
62
|
+
version: 1.3.1
|
|
56
63
|
type: :runtime
|
|
57
64
|
prerelease: false
|
|
58
65
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -62,7 +69,7 @@ dependencies:
|
|
|
62
69
|
version: '1.0'
|
|
63
70
|
- - ">="
|
|
64
71
|
- !ruby/object:Gem::Version
|
|
65
|
-
version: 1.
|
|
72
|
+
version: 1.3.1
|
|
66
73
|
- !ruby/object:Gem::Dependency
|
|
67
74
|
name: connection_pool
|
|
68
75
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -120,7 +127,7 @@ dependencies:
|
|
|
120
127
|
- !ruby/object:Gem::Version
|
|
121
128
|
version: '0'
|
|
122
129
|
- !ruby/object:Gem::Dependency
|
|
123
|
-
name:
|
|
130
|
+
name: bigdecimal
|
|
124
131
|
requirement: !ruby/object:Gem::Requirement
|
|
125
132
|
requirements:
|
|
126
133
|
- - ">="
|
|
@@ -134,47 +141,47 @@ dependencies:
|
|
|
134
141
|
- !ruby/object:Gem::Version
|
|
135
142
|
version: '0'
|
|
136
143
|
- !ruby/object:Gem::Dependency
|
|
137
|
-
name:
|
|
144
|
+
name: logger
|
|
138
145
|
requirement: !ruby/object:Gem::Requirement
|
|
139
146
|
requirements:
|
|
140
147
|
- - ">="
|
|
141
148
|
- !ruby/object:Gem::Version
|
|
142
|
-
version:
|
|
149
|
+
version: 1.4.2
|
|
143
150
|
type: :runtime
|
|
144
151
|
prerelease: false
|
|
145
152
|
version_requirements: !ruby/object:Gem::Requirement
|
|
146
153
|
requirements:
|
|
147
154
|
- - ">="
|
|
148
155
|
- !ruby/object:Gem::Version
|
|
149
|
-
version:
|
|
156
|
+
version: 1.4.2
|
|
150
157
|
- !ruby/object:Gem::Dependency
|
|
151
|
-
name:
|
|
158
|
+
name: securerandom
|
|
152
159
|
requirement: !ruby/object:Gem::Requirement
|
|
153
160
|
requirements:
|
|
154
161
|
- - ">="
|
|
155
162
|
- !ruby/object:Gem::Version
|
|
156
|
-
version:
|
|
163
|
+
version: '0.3'
|
|
157
164
|
type: :runtime
|
|
158
165
|
prerelease: false
|
|
159
166
|
version_requirements: !ruby/object:Gem::Requirement
|
|
160
167
|
requirements:
|
|
161
168
|
- - ">="
|
|
162
169
|
- !ruby/object:Gem::Version
|
|
163
|
-
version:
|
|
170
|
+
version: '0.3'
|
|
164
171
|
- !ruby/object:Gem::Dependency
|
|
165
|
-
name:
|
|
172
|
+
name: uri
|
|
166
173
|
requirement: !ruby/object:Gem::Requirement
|
|
167
174
|
requirements:
|
|
168
175
|
- - ">="
|
|
169
176
|
- !ruby/object:Gem::Version
|
|
170
|
-
version:
|
|
177
|
+
version: 0.13.1
|
|
171
178
|
type: :runtime
|
|
172
179
|
prerelease: false
|
|
173
180
|
version_requirements: !ruby/object:Gem::Requirement
|
|
174
181
|
requirements:
|
|
175
182
|
- - ">="
|
|
176
183
|
- !ruby/object:Gem::Version
|
|
177
|
-
version:
|
|
184
|
+
version: 0.13.1
|
|
178
185
|
- !ruby/object:Gem::Dependency
|
|
179
186
|
name: benchmark
|
|
180
187
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -205,6 +212,7 @@ files:
|
|
|
205
212
|
- lib/active_support/all.rb
|
|
206
213
|
- lib/active_support/array_inquirer.rb
|
|
207
214
|
- lib/active_support/backtrace_cleaner.rb
|
|
215
|
+
- lib/active_support/benchmark.rb
|
|
208
216
|
- lib/active_support/benchmarkable.rb
|
|
209
217
|
- lib/active_support/broadcast_logger.rb
|
|
210
218
|
- lib/active_support/builder.rb
|
|
@@ -220,6 +228,7 @@ files:
|
|
|
220
228
|
- lib/active_support/cache/strategy/local_cache.rb
|
|
221
229
|
- lib/active_support/cache/strategy/local_cache_middleware.rb
|
|
222
230
|
- lib/active_support/callbacks.rb
|
|
231
|
+
- lib/active_support/class_attribute.rb
|
|
223
232
|
- lib/active_support/code_generator.rb
|
|
224
233
|
- lib/active_support/concern.rb
|
|
225
234
|
- lib/active_support/concurrency/load_interlock_aware_monitor.rb
|
|
@@ -349,6 +358,7 @@ files:
|
|
|
349
358
|
- lib/active_support/current_attributes.rb
|
|
350
359
|
- lib/active_support/current_attributes/test_helper.rb
|
|
351
360
|
- lib/active_support/deep_mergeable.rb
|
|
361
|
+
- lib/active_support/delegation.rb
|
|
352
362
|
- lib/active_support/dependencies.rb
|
|
353
363
|
- lib/active_support/dependencies/autoload.rb
|
|
354
364
|
- lib/active_support/dependencies/interlock.rb
|
|
@@ -358,7 +368,6 @@ files:
|
|
|
358
368
|
- lib/active_support/deprecation/constant_accessor.rb
|
|
359
369
|
- lib/active_support/deprecation/deprecators.rb
|
|
360
370
|
- lib/active_support/deprecation/disallowed.rb
|
|
361
|
-
- lib/active_support/deprecation/instance_delegator.rb
|
|
362
371
|
- lib/active_support/deprecation/method_wrappers.rb
|
|
363
372
|
- lib/active_support/deprecation/proxy_wrappers.rb
|
|
364
373
|
- lib/active_support/deprecation/reporting.rb
|
|
@@ -439,12 +448,10 @@ files:
|
|
|
439
448
|
- lib/active_support/ordered_hash.rb
|
|
440
449
|
- lib/active_support/ordered_options.rb
|
|
441
450
|
- lib/active_support/parameter_filter.rb
|
|
442
|
-
- lib/active_support/proxy_object.rb
|
|
443
451
|
- lib/active_support/rails.rb
|
|
444
452
|
- lib/active_support/railtie.rb
|
|
445
453
|
- lib/active_support/reloader.rb
|
|
446
454
|
- lib/active_support/rescuable.rb
|
|
447
|
-
- lib/active_support/ruby_features.rb
|
|
448
455
|
- lib/active_support/secure_compare_rotator.rb
|
|
449
456
|
- lib/active_support/security_utils.rb
|
|
450
457
|
- lib/active_support/string_inquirer.rb
|
|
@@ -470,6 +477,7 @@ files:
|
|
|
470
477
|
- lib/active_support/testing/stream.rb
|
|
471
478
|
- lib/active_support/testing/strict_warnings.rb
|
|
472
479
|
- lib/active_support/testing/tagged_logging.rb
|
|
480
|
+
- lib/active_support/testing/tests_without_assertions.rb
|
|
473
481
|
- lib/active_support/testing/time_helpers.rb
|
|
474
482
|
- lib/active_support/time.rb
|
|
475
483
|
- lib/active_support/time_with_zone.rb
|
|
@@ -487,11 +495,12 @@ licenses:
|
|
|
487
495
|
- MIT
|
|
488
496
|
metadata:
|
|
489
497
|
bug_tracker_uri: https://github.com/rails/rails/issues
|
|
490
|
-
changelog_uri: https://github.com/rails/rails/blob/
|
|
491
|
-
documentation_uri: https://api.rubyonrails.org/
|
|
498
|
+
changelog_uri: https://github.com/rails/rails/blob/v8.0.1/activesupport/CHANGELOG.md
|
|
499
|
+
documentation_uri: https://api.rubyonrails.org/v8.0.1/
|
|
492
500
|
mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
|
|
493
|
-
source_code_uri: https://github.com/rails/rails/tree/
|
|
501
|
+
source_code_uri: https://github.com/rails/rails/tree/v8.0.1/activesupport
|
|
494
502
|
rubygems_mfa_required: 'true'
|
|
503
|
+
post_install_message:
|
|
495
504
|
rdoc_options:
|
|
496
505
|
- "--encoding"
|
|
497
506
|
- UTF-8
|
|
@@ -501,14 +510,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
501
510
|
requirements:
|
|
502
511
|
- - ">="
|
|
503
512
|
- !ruby/object:Gem::Version
|
|
504
|
-
version: 2.
|
|
513
|
+
version: 3.2.0
|
|
505
514
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
506
515
|
requirements:
|
|
507
516
|
- - ">="
|
|
508
517
|
- !ruby/object:Gem::Version
|
|
509
518
|
version: '0'
|
|
510
519
|
requirements: []
|
|
511
|
-
rubygems_version: 3.
|
|
520
|
+
rubygems_version: 3.5.22
|
|
521
|
+
signing_key:
|
|
512
522
|
specification_version: 4
|
|
513
523
|
summary: A toolkit of support libraries and Ruby core extensions extracted from the
|
|
514
524
|
Rails framework.
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module ActiveSupport
|
|
4
|
-
class Deprecation
|
|
5
|
-
module InstanceDelegator # :nodoc:
|
|
6
|
-
def self.included(base)
|
|
7
|
-
base.extend(ClassMethods)
|
|
8
|
-
base.singleton_class.prepend(OverrideDelegators)
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
module ClassMethods # :nodoc:
|
|
12
|
-
MUTEX = Mutex.new
|
|
13
|
-
private_constant :MUTEX
|
|
14
|
-
|
|
15
|
-
def include(included_module)
|
|
16
|
-
included_module.instance_methods.each { |m| method_added(m) }
|
|
17
|
-
super
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def method_added(method_name)
|
|
21
|
-
use_instead =
|
|
22
|
-
case method_name
|
|
23
|
-
when :silence, :behavior=, :disallowed_behavior=, :disallowed_warnings=, :silenced=, :debug=
|
|
24
|
-
target = "(defined?(Rails.application.deprecators) ? Rails.application.deprecators : ActiveSupport::Deprecation._instance)"
|
|
25
|
-
"Rails.application.deprecators.#{method_name}"
|
|
26
|
-
when :warn, :deprecate_methods, :gem_name, :gem_name=, :deprecation_horizon, :deprecation_horizon=
|
|
27
|
-
"your own Deprecation object"
|
|
28
|
-
else
|
|
29
|
-
"Rails.application.deprecators[framework].#{method_name} where framework is for example :active_record"
|
|
30
|
-
end
|
|
31
|
-
args = /[^\]]=\z/.match?(method_name) ? "arg" : "..."
|
|
32
|
-
target ||= "ActiveSupport::Deprecation._instance"
|
|
33
|
-
singleton_class.module_eval <<~RUBY, __FILE__, __LINE__ + 1
|
|
34
|
-
def #{method_name}(#{args})
|
|
35
|
-
#{target}.#{method_name}(#{args})
|
|
36
|
-
ensure
|
|
37
|
-
ActiveSupport.deprecator.warn("Calling #{method_name} on ActiveSupport::Deprecation is deprecated and will be removed from Rails (use #{use_instead} instead)")
|
|
38
|
-
end
|
|
39
|
-
RUBY
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def instance
|
|
43
|
-
ActiveSupport.deprecator.warn("ActiveSupport::Deprecation.instance is deprecated (use your own Deprecation object)")
|
|
44
|
-
_instance
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def _instance
|
|
48
|
-
@_instance ||= MUTEX.synchronize { @_instance ||= new }
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
module OverrideDelegators # :nodoc:
|
|
53
|
-
def warn(message = nil, callstack = nil)
|
|
54
|
-
callstack ||= caller_locations(2)
|
|
55
|
-
super
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def deprecation_warning(deprecated_method_name, message = nil, caller_backtrace = nil)
|
|
59
|
-
caller_backtrace ||= caller_locations(2)
|
|
60
|
-
super
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module ActiveSupport
|
|
4
|
-
# = Active Support Proxy \Object
|
|
5
|
-
#
|
|
6
|
-
# A class with no predefined methods that behaves similarly to Builder's
|
|
7
|
-
# BlankSlate. Used for proxy classes.
|
|
8
|
-
class ProxyObject < ::BasicObject
|
|
9
|
-
undef_method :==
|
|
10
|
-
undef_method :equal?
|
|
11
|
-
|
|
12
|
-
# Let ActiveSupport::ProxyObject at least raise exceptions.
|
|
13
|
-
def raise(*args)
|
|
14
|
-
::Object.send(:raise, *args)
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|