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.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +72 -1221
  3. data/lib/active_support/array_inquirer.rb +1 -1
  4. data/lib/active_support/backtrace_cleaner.rb +10 -3
  5. data/lib/active_support/benchmark.rb +21 -0
  6. data/lib/active_support/benchmarkable.rb +3 -2
  7. data/lib/active_support/broadcast_logger.rb +4 -4
  8. data/lib/active_support/cache/file_store.rb +27 -12
  9. data/lib/active_support/cache/mem_cache_store.rb +16 -74
  10. data/lib/active_support/cache/memory_store.rb +8 -3
  11. data/lib/active_support/cache/redis_cache_store.rb +21 -15
  12. data/lib/active_support/cache/serializer_with_fallback.rb +0 -23
  13. data/lib/active_support/cache.rb +74 -77
  14. data/lib/active_support/callbacks.rb +79 -116
  15. data/lib/active_support/class_attribute.rb +33 -0
  16. data/lib/active_support/code_generator.rb +9 -0
  17. data/lib/active_support/concurrency/share_lock.rb +0 -1
  18. data/lib/active_support/configuration_file.rb +15 -6
  19. data/lib/active_support/core_ext/array/conversions.rb +3 -5
  20. data/lib/active_support/core_ext/benchmark.rb +6 -9
  21. data/lib/active_support/core_ext/class/attribute.rb +24 -20
  22. data/lib/active_support/core_ext/class/subclasses.rb +15 -35
  23. data/lib/active_support/core_ext/date/blank.rb +4 -0
  24. data/lib/active_support/core_ext/date/conversions.rb +2 -2
  25. data/lib/active_support/core_ext/date_and_time/compatibility.rb +28 -1
  26. data/lib/active_support/core_ext/date_time/blank.rb +4 -0
  27. data/lib/active_support/core_ext/date_time/conversions.rb +0 -4
  28. data/lib/active_support/core_ext/digest/uuid.rb +6 -0
  29. data/lib/active_support/core_ext/enumerable.rb +8 -3
  30. data/lib/active_support/core_ext/erb/util.rb +7 -2
  31. data/lib/active_support/core_ext/hash/except.rb +0 -12
  32. data/lib/active_support/core_ext/hash/keys.rb +4 -4
  33. data/lib/active_support/core_ext/module/attr_internal.rb +16 -6
  34. data/lib/active_support/core_ext/module/delegation.rb +20 -163
  35. data/lib/active_support/core_ext/module/deprecation.rb +1 -4
  36. data/lib/active_support/core_ext/numeric/conversions.rb +3 -3
  37. data/lib/active_support/core_ext/object/blank.rb +45 -1
  38. data/lib/active_support/core_ext/object/instance_variables.rb +11 -19
  39. data/lib/active_support/core_ext/object/json.rb +16 -10
  40. data/lib/active_support/core_ext/object/with.rb +5 -3
  41. data/lib/active_support/core_ext/pathname/blank.rb +4 -0
  42. data/lib/active_support/core_ext/range/overlap.rb +1 -1
  43. data/lib/active_support/core_ext/securerandom.rb +4 -4
  44. data/lib/active_support/core_ext/string/conversions.rb +1 -1
  45. data/lib/active_support/core_ext/string/filters.rb +1 -1
  46. data/lib/active_support/core_ext/string/multibyte.rb +1 -1
  47. data/lib/active_support/core_ext/string/output_safety.rb +0 -7
  48. data/lib/active_support/core_ext/thread/backtrace/location.rb +2 -7
  49. data/lib/active_support/core_ext/time/calculations.rb +32 -30
  50. data/lib/active_support/core_ext/time/compatibility.rb +24 -0
  51. data/lib/active_support/core_ext/time/conversions.rb +2 -2
  52. data/lib/active_support/core_ext/time/zones.rb +1 -1
  53. data/lib/active_support/core_ext.rb +0 -1
  54. data/lib/active_support/current_attributes.rb +38 -40
  55. data/lib/active_support/delegation.rb +200 -0
  56. data/lib/active_support/dependencies/autoload.rb +0 -12
  57. data/lib/active_support/dependencies.rb +0 -1
  58. data/lib/active_support/deprecation/constant_accessor.rb +47 -26
  59. data/lib/active_support/deprecation/proxy_wrappers.rb +9 -12
  60. data/lib/active_support/deprecation/reporting.rb +1 -15
  61. data/lib/active_support/deprecation.rb +8 -5
  62. data/lib/active_support/descendants_tracker.rb +9 -87
  63. data/lib/active_support/duration/iso8601_parser.rb +2 -2
  64. data/lib/active_support/duration/iso8601_serializer.rb +1 -2
  65. data/lib/active_support/duration.rb +25 -16
  66. data/lib/active_support/encrypted_configuration.rb +20 -2
  67. data/lib/active_support/encrypted_file.rb +1 -1
  68. data/lib/active_support/error_reporter.rb +65 -3
  69. data/lib/active_support/evented_file_update_checker.rb +0 -2
  70. data/lib/active_support/execution_wrapper.rb +0 -1
  71. data/lib/active_support/file_update_checker.rb +1 -1
  72. data/lib/active_support/fork_tracker.rb +2 -38
  73. data/lib/active_support/gem_version.rb +4 -4
  74. data/lib/active_support/hash_with_indifferent_access.rb +21 -23
  75. data/lib/active_support/html_safe_translation.rb +3 -0
  76. data/lib/active_support/i18n_railtie.rb +19 -11
  77. data/lib/active_support/isolated_execution_state.rb +0 -2
  78. data/lib/active_support/json/encoding.rb +2 -2
  79. data/lib/active_support/log_subscriber.rb +0 -12
  80. data/lib/active_support/logger.rb +15 -2
  81. data/lib/active_support/logger_thread_safe_level.rb +0 -8
  82. data/lib/active_support/message_pack/extensions.rb +15 -2
  83. data/lib/active_support/message_verifier.rb +12 -0
  84. data/lib/active_support/multibyte/chars.rb +2 -2
  85. data/lib/active_support/notifications/fanout.rb +4 -8
  86. data/lib/active_support/notifications/instrumenter.rb +21 -18
  87. data/lib/active_support/notifications.rb +28 -27
  88. data/lib/active_support/number_helper/number_converter.rb +2 -2
  89. data/lib/active_support/number_helper.rb +22 -0
  90. data/lib/active_support/option_merger.rb +2 -2
  91. data/lib/active_support/ordered_options.rb +53 -15
  92. data/lib/active_support/railtie.rb +8 -11
  93. data/lib/active_support/string_inquirer.rb +1 -1
  94. data/lib/active_support/subscriber.rb +1 -0
  95. data/lib/active_support/tagged_logging.rb +5 -1
  96. data/lib/active_support/test_case.rb +3 -1
  97. data/lib/active_support/testing/assertions.rb +79 -21
  98. data/lib/active_support/testing/constant_stubbing.rb +30 -8
  99. data/lib/active_support/testing/deprecation.rb +5 -12
  100. data/lib/active_support/testing/isolation.rb +19 -9
  101. data/lib/active_support/testing/method_call_assertions.rb +2 -16
  102. data/lib/active_support/testing/parallelization/server.rb +3 -0
  103. data/lib/active_support/testing/strict_warnings.rb +8 -4
  104. data/lib/active_support/testing/tests_without_assertions.rb +19 -0
  105. data/lib/active_support/testing/time_helpers.rb +4 -3
  106. data/lib/active_support/time_with_zone.rb +30 -17
  107. data/lib/active_support/values/time_zone.rb +18 -16
  108. data/lib/active_support/xml_mini.rb +11 -2
  109. data/lib/active_support.rb +11 -3
  110. metadata +32 -22
  111. data/lib/active_support/deprecation/instance_delegator.rb +0 -65
  112. data/lib/active_support/proxy_object.rb +0 -17
  113. 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 # => "Thu, 04 Dec 2014 11:00:25.624541392 EST -05:00"
139
+ # Time.zone.now.inspect # => "2024-11-13 07:00:10.528054960 UTC +00:00"
140
140
  def inspect
141
- "#{time.strftime('%a, %d %b %Y %H:%M:%S.%9N')} #{zone} #{formatted_offset}"
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").to_json
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").to_json
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
- # Change to to_s when deprecation is gone.
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
- result = utc.acts_like?(:date) ? utc.since(other) : utc + other rescue utc.since(other)
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
- to_time - other.to_time
343
+ getutc - other.getutc
336
344
  elsif duration_of_variable_length?(other)
337
345
  method_missing(:-, other)
338
346
  else
339
- result = utc.acts_like?(:date) ? utc.ago(other) : utc - other rescue utc.ago(other)
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.116992711 EST -05:00
379
- # t.change(min: 30) # => Fri, 14 Apr 2017 11:30:00.116992711 EST -05: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 UTC offset
483
- # as +self+ or in the local system timezone depending on the setting
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
- # :stopdoc:
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
- # Available so that TimeZone instances respond like +TZInfo::Timezone+
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
- # Available so that TimeZone instances respond like +TZInfo::Timezone+
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 'libxml-ruby'
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
@@ -57,12 +57,14 @@ module ActiveSupport
57
57
 
58
58
  eager_autoload do
59
59
  autoload :BacktraceCleaner
60
- autoload :ProxyObject
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
- unless value
119
+ if !value
118
120
  ActiveSupport.deprecator.warn(
119
- "Support for the pre-Ruby 2.4 behavior of to_time has been deprecated and will be removed in Rails 7.2."
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: 7.1.5.2
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: 1980-01-02 00:00:00.000000000 Z
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.0.2
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.0.2
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: mutex_m
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: bigdecimal
144
+ name: logger
138
145
  requirement: !ruby/object:Gem::Requirement
139
146
  requirements:
140
147
  - - ">="
141
148
  - !ruby/object:Gem::Version
142
- version: '0'
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: '0'
156
+ version: 1.4.2
150
157
  - !ruby/object:Gem::Dependency
151
- name: logger
158
+ name: securerandom
152
159
  requirement: !ruby/object:Gem::Requirement
153
160
  requirements:
154
161
  - - ">="
155
162
  - !ruby/object:Gem::Version
156
- version: 1.4.2
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: 1.4.2
170
+ version: '0.3'
164
171
  - !ruby/object:Gem::Dependency
165
- name: securerandom
172
+ name: uri
166
173
  requirement: !ruby/object:Gem::Requirement
167
174
  requirements:
168
175
  - - ">="
169
176
  - !ruby/object:Gem::Version
170
- version: '0.3'
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: '0.3'
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/v7.1.5.2/activesupport/CHANGELOG.md
491
- documentation_uri: https://api.rubyonrails.org/v7.1.5.2/
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/v7.1.5.2/activesupport
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.7.0
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.6.9
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
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ActiveSupport
4
- module RubyFeatures # :nodoc:
5
- CLASS_SUBCLASSES = Class.method_defined?(:subclasses) # RUBY_VERSION >= "3.1"
6
- end
7
- end