activesupport 6.1.4.1 → 7.0.0.rc2

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.

Files changed (163) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +201 -489
  3. data/MIT-LICENSE +1 -1
  4. data/lib/active_support/actionable_error.rb +1 -1
  5. data/lib/active_support/array_inquirer.rb +0 -2
  6. data/lib/active_support/benchmarkable.rb +2 -2
  7. data/lib/active_support/cache/file_store.rb +15 -9
  8. data/lib/active_support/cache/mem_cache_store.rb +127 -32
  9. data/lib/active_support/cache/memory_store.rb +23 -15
  10. data/lib/active_support/cache/null_store.rb +10 -2
  11. data/lib/active_support/cache/redis_cache_store.rb +42 -67
  12. data/lib/active_support/cache/strategy/local_cache.rb +35 -61
  13. data/lib/active_support/cache.rb +189 -45
  14. data/lib/active_support/callbacks.rb +180 -81
  15. data/lib/active_support/code_generator.rb +65 -0
  16. data/lib/active_support/concern.rb +5 -5
  17. data/lib/active_support/concurrency/load_interlock_aware_monitor.rb +2 -4
  18. data/lib/active_support/concurrency/share_lock.rb +2 -2
  19. data/lib/active_support/configurable.rb +6 -3
  20. data/lib/active_support/configuration_file.rb +1 -1
  21. data/lib/active_support/core_ext/array/access.rb +1 -5
  22. data/lib/active_support/core_ext/array/conversions.rb +9 -7
  23. data/lib/active_support/core_ext/array/deprecated_conversions.rb +25 -0
  24. data/lib/active_support/core_ext/array/grouping.rb +6 -6
  25. data/lib/active_support/core_ext/array.rb +1 -0
  26. data/lib/active_support/core_ext/big_decimal/conversions.rb +1 -1
  27. data/lib/active_support/core_ext/class/subclasses.rb +4 -2
  28. data/lib/active_support/core_ext/date/blank.rb +1 -1
  29. data/lib/active_support/core_ext/date/calculations.rb +4 -4
  30. data/lib/active_support/core_ext/date/conversions.rb +3 -3
  31. data/lib/active_support/core_ext/date/deprecated_conversions.rb +26 -0
  32. data/lib/active_support/core_ext/date.rb +1 -0
  33. data/lib/active_support/core_ext/date_and_time/compatibility.rb +1 -1
  34. data/lib/active_support/core_ext/date_time/blank.rb +1 -1
  35. data/lib/active_support/core_ext/date_time/conversions.rb +5 -5
  36. data/lib/active_support/core_ext/date_time/deprecated_conversions.rb +22 -0
  37. data/lib/active_support/core_ext/date_time.rb +1 -0
  38. data/lib/active_support/core_ext/digest/uuid.rb +39 -13
  39. data/lib/active_support/core_ext/enumerable.rb +64 -12
  40. data/lib/active_support/core_ext/file/atomic.rb +1 -1
  41. data/lib/active_support/core_ext/hash/keys.rb +1 -1
  42. data/lib/active_support/core_ext/kernel/reporting.rb +4 -4
  43. data/lib/active_support/core_ext/module/attribute_accessors.rb +2 -0
  44. data/lib/active_support/core_ext/module/attribute_accessors_per_thread.rb +19 -10
  45. data/lib/active_support/core_ext/module/delegation.rb +2 -8
  46. data/lib/active_support/core_ext/name_error.rb +2 -8
  47. data/lib/active_support/core_ext/numeric/conversions.rb +79 -76
  48. data/lib/active_support/core_ext/numeric/deprecated_conversions.rb +60 -0
  49. data/lib/active_support/core_ext/numeric.rb +1 -0
  50. data/lib/active_support/core_ext/object/blank.rb +2 -2
  51. data/lib/active_support/core_ext/object/deep_dup.rb +1 -1
  52. data/lib/active_support/core_ext/object/duplicable.rb +11 -0
  53. data/lib/active_support/core_ext/object/json.rb +29 -24
  54. data/lib/active_support/core_ext/object/to_query.rb +2 -2
  55. data/lib/active_support/core_ext/object/try.rb +20 -20
  56. data/lib/active_support/core_ext/object/with_options.rb +20 -1
  57. data/lib/active_support/core_ext/pathname/existence.rb +21 -0
  58. data/lib/active_support/core_ext/pathname.rb +3 -0
  59. data/lib/active_support/core_ext/range/compare_range.rb +0 -25
  60. data/lib/active_support/core_ext/range/conversions.rb +8 -8
  61. data/lib/active_support/core_ext/range/deprecated_conversions.rb +26 -0
  62. data/lib/active_support/core_ext/range/each.rb +1 -1
  63. data/lib/active_support/core_ext/range/include_time_with_zone.rb +4 -25
  64. data/lib/active_support/core_ext/range.rb +1 -1
  65. data/lib/active_support/core_ext/string/filters.rb +1 -1
  66. data/lib/active_support/core_ext/string/inflections.rb +1 -1
  67. data/lib/active_support/core_ext/string/output_safety.rb +60 -36
  68. data/lib/active_support/core_ext/symbol/starts_ends_with.rb +0 -8
  69. data/lib/active_support/core_ext/time/calculations.rb +7 -6
  70. data/lib/active_support/core_ext/time/conversions.rb +4 -3
  71. data/lib/active_support/core_ext/time/deprecated_conversions.rb +22 -0
  72. data/lib/active_support/core_ext/time/zones.rb +4 -19
  73. data/lib/active_support/core_ext/time.rb +1 -0
  74. data/lib/active_support/core_ext/uri.rb +3 -27
  75. data/lib/active_support/core_ext.rb +1 -0
  76. data/lib/active_support/current_attributes.rb +31 -14
  77. data/lib/active_support/dependencies/interlock.rb +10 -18
  78. data/lib/active_support/dependencies/require_dependency.rb +28 -0
  79. data/lib/active_support/dependencies.rb +58 -788
  80. data/lib/active_support/deprecation/behaviors.rb +4 -1
  81. data/lib/active_support/deprecation/method_wrappers.rb +3 -3
  82. data/lib/active_support/deprecation/proxy_wrappers.rb +1 -1
  83. data/lib/active_support/deprecation.rb +1 -1
  84. data/lib/active_support/descendants_tracker.rb +177 -68
  85. data/lib/active_support/digest.rb +5 -3
  86. data/lib/active_support/duration/iso8601_parser.rb +3 -3
  87. data/lib/active_support/duration/iso8601_serializer.rb +9 -1
  88. data/lib/active_support/duration.rb +77 -48
  89. data/lib/active_support/encrypted_configuration.rb +11 -1
  90. data/lib/active_support/encrypted_file.rb +1 -1
  91. data/lib/active_support/environment_inquirer.rb +1 -1
  92. data/lib/active_support/error_reporter.rb +117 -0
  93. data/lib/active_support/evented_file_update_checker.rb +1 -1
  94. data/lib/active_support/execution_context/test_helper.rb +13 -0
  95. data/lib/active_support/execution_context.rb +53 -0
  96. data/lib/active_support/execution_wrapper.rb +30 -4
  97. data/lib/active_support/executor/test_helper.rb +7 -0
  98. data/lib/active_support/fork_tracker.rb +19 -12
  99. data/lib/active_support/gem_version.rb +4 -4
  100. data/lib/active_support/hash_with_indifferent_access.rb +3 -1
  101. data/lib/active_support/html_safe_translation.rb +43 -0
  102. data/lib/active_support/i18n.rb +1 -0
  103. data/lib/active_support/i18n_railtie.rb +1 -1
  104. data/lib/active_support/inflector/inflections.rb +23 -7
  105. data/lib/active_support/inflector/methods.rb +24 -48
  106. data/lib/active_support/isolated_execution_state.rb +56 -0
  107. data/lib/active_support/json/encoding.rb +3 -3
  108. data/lib/active_support/key_generator.rb +18 -1
  109. data/lib/active_support/locale/en.yml +1 -1
  110. data/lib/active_support/log_subscriber.rb +13 -3
  111. data/lib/active_support/logger_thread_safe_level.rb +4 -13
  112. data/lib/active_support/message_encryptor.rb +8 -3
  113. data/lib/active_support/message_verifier.rb +4 -4
  114. data/lib/active_support/messages/metadata.rb +2 -2
  115. data/lib/active_support/multibyte/chars.rb +10 -11
  116. data/lib/active_support/multibyte/unicode.rb +0 -12
  117. data/lib/active_support/multibyte.rb +1 -1
  118. data/lib/active_support/notifications/fanout.rb +91 -65
  119. data/lib/active_support/notifications/instrumenter.rb +32 -15
  120. data/lib/active_support/notifications.rb +15 -21
  121. data/lib/active_support/number_helper/number_converter.rb +1 -3
  122. data/lib/active_support/number_helper/number_to_currency_converter.rb +11 -6
  123. data/lib/active_support/number_helper/number_to_delimited_converter.rb +1 -1
  124. data/lib/active_support/number_helper/number_to_human_size_converter.rb +1 -1
  125. data/lib/active_support/number_helper/number_to_phone_converter.rb +1 -1
  126. data/lib/active_support/number_helper/rounding_helper.rb +1 -5
  127. data/lib/active_support/number_helper.rb +0 -2
  128. data/lib/active_support/option_merger.rb +8 -16
  129. data/lib/active_support/ordered_hash.rb +1 -1
  130. data/lib/active_support/parameter_filter.rb +5 -0
  131. data/lib/active_support/per_thread_registry.rb +5 -0
  132. data/lib/active_support/railtie.rb +69 -19
  133. data/lib/active_support/rescuable.rb +2 -2
  134. data/lib/active_support/ruby_features.rb +7 -0
  135. data/lib/active_support/secure_compare_rotator.rb +1 -1
  136. data/lib/active_support/string_inquirer.rb +0 -2
  137. data/lib/active_support/subscriber.rb +7 -18
  138. data/lib/active_support/tagged_logging.rb +2 -2
  139. data/lib/active_support/test_case.rb +9 -21
  140. data/lib/active_support/testing/assertions.rb +35 -5
  141. data/lib/active_support/testing/deprecation.rb +52 -1
  142. data/lib/active_support/testing/isolation.rb +2 -2
  143. data/lib/active_support/testing/method_call_assertions.rb +5 -5
  144. data/lib/active_support/testing/parallelization/server.rb +4 -0
  145. data/lib/active_support/testing/parallelization/worker.rb +3 -0
  146. data/lib/active_support/testing/parallelization.rb +4 -0
  147. data/lib/active_support/testing/parallelize_executor.rb +76 -0
  148. data/lib/active_support/testing/stream.rb +3 -5
  149. data/lib/active_support/testing/tagged_logging.rb +1 -1
  150. data/lib/active_support/testing/time_helpers.rb +13 -2
  151. data/lib/active_support/time_with_zone.rb +53 -12
  152. data/lib/active_support/values/time_zone.rb +30 -9
  153. data/lib/active_support/xml_mini/jdom.rb +1 -1
  154. data/lib/active_support/xml_mini/libxml.rb +5 -5
  155. data/lib/active_support/xml_mini/libxmlsax.rb +1 -1
  156. data/lib/active_support/xml_mini/nokogiri.rb +4 -4
  157. data/lib/active_support/xml_mini/nokogirisax.rb +1 -1
  158. data/lib/active_support/xml_mini/rexml.rb +1 -1
  159. data/lib/active_support/xml_mini.rb +5 -4
  160. data/lib/active_support.rb +17 -1
  161. metadata +27 -24
  162. data/lib/active_support/core_ext/marshal.rb +0 -26
  163. data/lib/active_support/dependencies/zeitwerk_integration.rb +0 -117
@@ -126,7 +126,7 @@ module ActiveSupport
126
126
  # end
127
127
  # Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00
128
128
  def travel_to(date_or_time)
129
- if block_given? && simple_stubs.stubbing(Time, :now)
129
+ if block_given? && in_block
130
130
  travel_to_nested_block_call = <<~MSG
131
131
 
132
132
  Calling `travel_to` with a block, when we have previously already made a call to `travel_to`, can lead to confusing time stubbing.
@@ -156,19 +156,28 @@ module ActiveSupport
156
156
 
157
157
  if date_or_time.is_a?(Date) && !date_or_time.is_a?(DateTime)
158
158
  now = date_or_time.midnight.to_time
159
+ elsif date_or_time.is_a?(String)
160
+ now = Time.zone.parse(date_or_time)
159
161
  else
160
162
  now = date_or_time.to_time.change(usec: 0)
161
163
  end
162
164
 
165
+ stubbed_time = Time.now if simple_stubs.stubbing(Time, :now)
163
166
  simple_stubs.stub_object(Time, :now) { at(now.to_i) }
164
167
  simple_stubs.stub_object(Date, :today) { jd(now.to_date.jd) }
165
168
  simple_stubs.stub_object(DateTime, :now) { jd(now.to_date.jd, now.hour, now.min, now.sec, Rational(now.utc_offset, 86400)) }
166
169
 
167
170
  if block_given?
168
171
  begin
172
+ self.in_block = true
169
173
  yield
170
174
  ensure
171
- travel_back
175
+ if stubbed_time
176
+ travel_to stubbed_time
177
+ else
178
+ travel_back
179
+ end
180
+ self.in_block = false
172
181
  end
173
182
  end
174
183
  end
@@ -230,6 +239,8 @@ module ActiveSupport
230
239
  def simple_stubs
231
240
  @simple_stubs ||= SimpleStubs.new
232
241
  end
242
+
243
+ attr_accessor :in_block
233
244
  end
234
245
  end
235
246
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "yaml"
4
+
3
5
  require "active_support/duration"
4
6
  require "active_support/values/time_zone"
5
7
  require "active_support/core_ext/object/acts_like"
@@ -31,7 +33,7 @@ module ActiveSupport
31
33
  # t.dst? # => true
32
34
  # t.utc_offset # => -14400
33
35
  # t.zone # => "EDT"
34
- # t.to_s(:rfc822) # => "Sun, 18 May 2008 13:27:25 -0400"
36
+ # t.to_formatted_s(:rfc822) # => "Sun, 18 May 2008 13:27:25 -0400"
35
37
  # t + 1.day # => Mon, 19 May 2008 13:27:25.031505668 EDT -04:00
36
38
  # t.beginning_of_year # => Tue, 01 Jan 2008 00:00:00.000000000 EST -05:00
37
39
  # t > Time.utc(1999) # => true
@@ -40,6 +42,13 @@ module ActiveSupport
40
42
  class TimeWithZone
41
43
  # Report class name as 'Time' to thwart type checking.
42
44
  def self.name
45
+ ActiveSupport::Deprecation.warn(<<~EOM)
46
+ ActiveSupport::TimeWithZone.name has been deprecated and
47
+ from Rails 7.1 will use the default Ruby implementation.
48
+ You can set `config.active_support.remove_deprecated_time_with_zone_name = true`
49
+ to enable the new behavior now.
50
+ EOM
51
+
43
52
  "Time"
44
53
  end
45
54
 
@@ -172,12 +181,11 @@ module ActiveSupport
172
181
  end
173
182
  end
174
183
 
175
- def init_with(coder) #:nodoc:
184
+ def init_with(coder) # :nodoc:
176
185
  initialize(coder["utc"], coder["zone"], coder["time"])
177
186
  end
178
187
 
179
- def encode_with(coder) #:nodoc:
180
- coder.tag = "!ruby/object:ActiveSupport::TimeWithZone"
188
+ def encode_with(coder) # :nodoc:
181
189
  coder.map = { "utc" => utc, "zone" => time_zone, "time" => time }
182
190
  end
183
191
 
@@ -194,25 +202,53 @@ module ActiveSupport
194
202
  #
195
203
  # Time.zone.now.rfc2822 # => "Tue, 01 Jan 2013 04:51:39 +0000"
196
204
  def rfc2822
197
- to_s(:rfc822)
205
+ to_formatted_s(:rfc822)
198
206
  end
199
207
  alias_method :rfc822, :rfc2822
200
208
 
209
+ NOT_SET = Object.new # :nodoc:
210
+
201
211
  # Returns a string of the object's date and time.
212
+ def to_s(format = NOT_SET)
213
+ if format == :db
214
+ ActiveSupport::Deprecation.warn(
215
+ "TimeWithZone#to_s(:db) is deprecated. Please use TimeWithZone#to_formatted_s(:db) instead."
216
+ )
217
+ utc.to_formatted_s(format)
218
+ elsif formatter = ::Time::DATE_FORMATS[format]
219
+ ActiveSupport::Deprecation.warn(
220
+ "TimeWithZone#to_s(#{format.inspect}) is deprecated. Please use TimeWithZone#to_formatted_s(#{format.inspect}) instead."
221
+ )
222
+ formatter.respond_to?(:call) ? formatter.call(self).to_s : strftime(formatter)
223
+ elsif format == NOT_SET
224
+ "#{time.strftime("%Y-%m-%d %H:%M:%S")} #{formatted_offset(false, 'UTC')}" # mimicking Ruby Time#to_s format
225
+ else
226
+ ActiveSupport::Deprecation.warn(
227
+ "TimeWithZone#to_s(#{format.inspect}) is deprecated. Please use TimeWithZone#to_formatted_s(#{format.inspect}) instead."
228
+ )
229
+ "#{time.strftime("%Y-%m-%d %H:%M:%S")} #{formatted_offset(false, 'UTC')}" # mimicking Ruby Time#to_s format
230
+ end
231
+ end
232
+
233
+ # Returns a string of the object's date and time.
234
+ #
235
+ # This method is aliased to <tt>to_fs</tt>.
236
+ #
202
237
  # Accepts an optional <tt>format</tt>:
203
238
  # * <tt>:default</tt> - default value, mimics Ruby Time#to_s format.
204
239
  # * <tt>:db</tt> - format outputs time in UTC :db time. See Time#to_formatted_s(:db).
205
240
  # * Any key in <tt>Time::DATE_FORMATS</tt> can be used. See active_support/core_ext/time/conversions.rb.
206
- def to_s(format = :default)
241
+ def to_formatted_s(format = :default)
207
242
  if format == :db
208
- utc.to_s(format)
243
+ utc.to_formatted_s(format)
209
244
  elsif formatter = ::Time::DATE_FORMATS[format]
210
245
  formatter.respond_to?(:call) ? formatter.call(self).to_s : strftime(formatter)
211
246
  else
212
- "#{time.strftime("%Y-%m-%d %H:%M:%S")} #{formatted_offset(false, 'UTC')}" # mimicking Ruby Time#to_s format
247
+ # Change to to_s when deprecation is gone.
248
+ "#{time.strftime("%Y-%m-%d %H:%M:%S")} #{formatted_offset(false, 'UTC')}"
213
249
  end
214
250
  end
215
- alias_method :to_formatted_s, :to_s
251
+ alias_method :to_fs, :to_formatted_s
216
252
 
217
253
  # Replaces <tt>%Z</tt> directive with +zone before passing to Time#strftime,
218
254
  # so that zone information is correct.
@@ -440,7 +476,7 @@ module ActiveSupport
440
476
  [time.sec, time.min, time.hour, time.day, time.mon, time.year, time.wday, time.yday, dst?, zone]
441
477
  end
442
478
 
443
- # Returns the object's date and time as a floating point number of seconds
479
+ # Returns the object's date and time as a floating-point number of seconds
444
480
  # since the Epoch (January 1, 1970 00:00 UTC).
445
481
  #
446
482
  # Time.zone.now.to_f # => 1417709320.285418
@@ -534,7 +570,7 @@ module ActiveSupport
534
570
  def method_missing(sym, *args, &block)
535
571
  wrap_with_time_zone time.__send__(sym, *args, &block)
536
572
  rescue NoMethodError => e
537
- raise e, e.message.sub(time.inspect, inspect), e.backtrace
573
+ raise e, e.message.sub(time.inspect, inspect).sub("Time", "ActiveSupport::TimeWithZone"), e.backtrace
538
574
  end
539
575
 
540
576
  private
@@ -568,7 +604,7 @@ module ActiveSupport
568
604
  end
569
605
 
570
606
  def duration_of_variable_length?(obj)
571
- ActiveSupport::Duration === obj && obj.parts.any? { |p| [:years, :months, :weeks, :days].include?(p[0]) }
607
+ ActiveSupport::Duration === obj && obj.variable?
572
608
  end
573
609
 
574
610
  def wrap_with_time_zone(time)
@@ -583,3 +619,8 @@ module ActiveSupport
583
619
  end
584
620
  end
585
621
  end
622
+
623
+ # These prevent Psych from calling `ActiveSupport::TimeWithZone.name`
624
+ # and triggering the deprecation warning about the change in Rails 7.1.
625
+ YAML.load_tags["!ruby/object:ActiveSupport::TimeWithZone"] = "ActiveSupport::TimeWithZone"
626
+ YAML.dump_tags[ActiveSupport::TimeWithZone] = "!ruby/object:ActiveSupport::TimeWithZone"
@@ -229,12 +229,16 @@ module ActiveSupport
229
229
  # Returns +nil+ if no such time zone is known to the system.
230
230
  def [](arg)
231
231
  case arg
232
+ when self
233
+ arg
232
234
  when String
233
235
  begin
234
236
  @lazy_zones_map[arg] ||= create(arg)
235
237
  rescue TZInfo::InvalidTimezoneIdentifier
236
238
  nil
237
239
  end
240
+ when TZInfo::Timezone
241
+ @lazy_zones_map[arg.name] ||= create(arg.name, nil, arg)
238
242
  when Numeric, ActiveSupport::Duration
239
243
  arg *= 3600 if arg.abs <= 13
240
244
  all.find { |z| z.utc_offset == arg.to_i }
@@ -256,7 +260,7 @@ module ActiveSupport
256
260
  @country_zones[code] ||= load_country_zones(code)
257
261
  end
258
262
 
259
- def clear #:nodoc:
263
+ def clear # :nodoc:
260
264
  @lazy_zones_map = Concurrent::Map.new
261
265
  @country_zones = Concurrent::Map.new
262
266
  @zones = nil
@@ -381,14 +385,28 @@ module ActiveSupport
381
385
  # If the string is invalid then an +ArgumentError+ will be raised unlike +parse+
382
386
  # which usually returns +nil+ when given an invalid date string.
383
387
  def iso8601(str)
388
+ # Historically `Date._iso8601(nil)` returns `{}`, but in the `date` gem versions `3.2.1`, `3.1.2`, `3.0.2`,
389
+ # and `2.0.1`, `Date._iso8601(nil)` raises `TypeError` https://github.com/ruby/date/issues/39
390
+ # Future `date` releases are expected to revert back to the original behavior.
391
+ raise ArgumentError, "invalid date" if str.nil?
392
+
384
393
  parts = Date._iso8601(str)
385
394
 
386
- raise ArgumentError, "invalid date" if parts.empty?
395
+ year = parts.fetch(:year)
396
+
397
+ if parts.key?(:yday)
398
+ ordinal_date = Date.ordinal(year, parts.fetch(:yday))
399
+ month = ordinal_date.month
400
+ day = ordinal_date.day
401
+ else
402
+ month = parts.fetch(:mon)
403
+ day = parts.fetch(:mday)
404
+ end
387
405
 
388
406
  time = Time.new(
389
- parts.fetch(:year),
390
- parts.fetch(:mon),
391
- parts.fetch(:mday),
407
+ year,
408
+ month,
409
+ day,
392
410
  parts.fetch(:hour, 0),
393
411
  parts.fetch(:min, 0),
394
412
  parts.fetch(:sec, 0) + parts.fetch(:sec_fraction, 0),
@@ -400,6 +418,9 @@ module ActiveSupport
400
418
  else
401
419
  TimeWithZone.new(nil, self, time)
402
420
  end
421
+
422
+ rescue Date::Error, KeyError
423
+ raise ArgumentError, "invalid date"
403
424
  end
404
425
 
405
426
  # Method for creating new ActiveSupport::TimeWithZone instance in time zone
@@ -512,7 +533,7 @@ module ActiveSupport
512
533
  def utc_to_local(time)
513
534
  tzinfo.utc_to_local(time).yield_self do |t|
514
535
  ActiveSupport.utc_to_local_returns_utc_offset_times ?
515
- t : Time.utc(t.year, t.month, t.day, t.hour, t.min, t.sec, t.sec_fraction)
536
+ t : Time.utc(t.year, t.month, t.day, t.hour, t.min, t.sec, t.sec_fraction * 1_000_000)
516
537
  end
517
538
  end
518
539
 
@@ -534,15 +555,15 @@ module ActiveSupport
534
555
  tzinfo.period_for_local(time, dst) { |periods| periods.last }
535
556
  end
536
557
 
537
- def periods_for_local(time) #:nodoc:
558
+ def periods_for_local(time) # :nodoc:
538
559
  tzinfo.periods_for_local(time)
539
560
  end
540
561
 
541
- def init_with(coder) #:nodoc:
562
+ def init_with(coder) # :nodoc:
542
563
  initialize(coder["name"])
543
564
  end
544
565
 
545
- def encode_with(coder) #:nodoc:
566
+ def encode_with(coder) # :nodoc:
546
567
  coder.tag = "!ruby/object:#{self.class}"
547
568
  coder.map = { "name" => tzinfo.name }
548
569
  end
@@ -15,7 +15,7 @@ java_import org.xml.sax.Attributes unless defined? Attributes
15
15
  java_import org.w3c.dom.Node unless defined? Node
16
16
 
17
17
  module ActiveSupport
18
- module XmlMini_JDOM #:nodoc:
18
+ module XmlMini_JDOM # :nodoc:
19
19
  extend self
20
20
 
21
21
  CONTENT_KEY = "__content__"
@@ -5,7 +5,7 @@ require "active_support/core_ext/object/blank"
5
5
  require "stringio"
6
6
 
7
7
  module ActiveSupport
8
- module XmlMini_LibXML #:nodoc:
8
+ module XmlMini_LibXML # :nodoc:
9
9
  extend self
10
10
 
11
11
  # Parse an XML Document string or IO into a simple hash using libxml.
@@ -25,15 +25,15 @@ module ActiveSupport
25
25
  end
26
26
  end
27
27
 
28
- module LibXML #:nodoc:
29
- module Conversions #:nodoc:
30
- module Document #:nodoc:
28
+ module LibXML # :nodoc:
29
+ module Conversions # :nodoc:
30
+ module Document # :nodoc:
31
31
  def to_hash
32
32
  root.to_hash
33
33
  end
34
34
  end
35
35
 
36
- module Node #:nodoc:
36
+ module Node # :nodoc:
37
37
  CONTENT_ROOT = "__content__"
38
38
 
39
39
  # Convert XML document to hash.
@@ -5,7 +5,7 @@ require "active_support/core_ext/object/blank"
5
5
  require "stringio"
6
6
 
7
7
  module ActiveSupport
8
- module XmlMini_LibXMLSAX #:nodoc:
8
+ module XmlMini_LibXMLSAX # :nodoc:
9
9
  extend self
10
10
 
11
11
  # Class that will build the hash while the XML document
@@ -10,7 +10,7 @@ require "active_support/core_ext/object/blank"
10
10
  require "stringio"
11
11
 
12
12
  module ActiveSupport
13
- module XmlMini_Nokogiri #:nodoc:
13
+ module XmlMini_Nokogiri # :nodoc:
14
14
  extend self
15
15
 
16
16
  # Parse an XML Document string or IO into a simple hash using libxml / nokogiri.
@@ -30,14 +30,14 @@ module ActiveSupport
30
30
  end
31
31
  end
32
32
 
33
- module Conversions #:nodoc:
34
- module Document #:nodoc:
33
+ module Conversions # :nodoc:
34
+ module Document # :nodoc:
35
35
  def to_hash
36
36
  root.to_hash
37
37
  end
38
38
  end
39
39
 
40
- module Node #:nodoc:
40
+ module Node # :nodoc:
41
41
  CONTENT_ROOT = "__content__"
42
42
 
43
43
  # Convert XML document to hash.
@@ -10,7 +10,7 @@ require "active_support/core_ext/object/blank"
10
10
  require "stringio"
11
11
 
12
12
  module ActiveSupport
13
- module XmlMini_NokogiriSAX #:nodoc:
13
+ module XmlMini_NokogiriSAX # :nodoc:
14
14
  extend self
15
15
 
16
16
  # Class that will build the hash while the XML document
@@ -5,7 +5,7 @@ require "active_support/core_ext/object/blank"
5
5
  require "stringio"
6
6
 
7
7
  module ActiveSupport
8
- module XmlMini_REXML #:nodoc:
8
+ module XmlMini_REXML # :nodoc:
9
9
  extend self
10
10
 
11
11
  CONTENT_KEY = "__content__"
@@ -19,7 +19,7 @@ module ActiveSupport
19
19
 
20
20
  # This module decorates files deserialized using Hash.from_xml with
21
21
  # the <tt>original_filename</tt> and <tt>content_type</tt> methods.
22
- module FileLike #:nodoc:
22
+ module FileLike # :nodoc:
23
23
  attr_writer :original_filename, :content_type
24
24
 
25
25
  def original_filename
@@ -50,10 +50,11 @@ module ActiveSupport
50
50
  "Hash" => "hash"
51
51
  }
52
52
  end
53
+ TYPE_NAMES["ActiveSupport::TimeWithZone"] = TYPE_NAMES["Time"]
53
54
 
54
55
  FORMATTING = {
55
56
  "symbol" => Proc.new { |symbol| symbol.to_s },
56
- "date" => Proc.new { |date| date.to_s(:db) },
57
+ "date" => Proc.new { |date| date.to_formatted_s(:db) },
57
58
  "dateTime" => Proc.new { |time| time.xmlschema },
58
59
  "binary" => Proc.new { |binary| ::Base64.encode64(binary) },
59
60
  "yaml" => Proc.new { |yaml| yaml.to_yaml }
@@ -180,11 +181,11 @@ module ActiveSupport
180
181
  end
181
182
 
182
183
  def current_thread_backend
183
- Thread.current[:xml_mini_backend]
184
+ IsolatedExecutionState[:xml_mini_backend]
184
185
  end
185
186
 
186
187
  def current_thread_backend=(name)
187
- Thread.current[:xml_mini_backend] = name && cast_backend_name_to_module(name)
188
+ IsolatedExecutionState[:xml_mini_backend] = name && cast_backend_name_to_module(name)
188
189
  end
189
190
 
190
191
  def cast_backend_name_to_module(name)
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  #--
4
- # Copyright (c) 2005-2020 David Heinemeier Hansson
4
+ # Copyright (c) 2005-2021 David Heinemeier Hansson
5
5
  #
6
6
  # Permission is hereby granted, free of charge, to any person obtaining
7
7
  # a copy of this software and associated documentation files (the
@@ -34,19 +34,24 @@ module ActiveSupport
34
34
  extend ActiveSupport::Autoload
35
35
 
36
36
  autoload :Concern
37
+ autoload :CodeGenerator
37
38
  autoload :ActionableError
38
39
  autoload :ConfigurationFile
39
40
  autoload :CurrentAttributes
40
41
  autoload :Dependencies
41
42
  autoload :DescendantsTracker
43
+ autoload :ExecutionContext
42
44
  autoload :ExecutionWrapper
43
45
  autoload :Executor
46
+ autoload :ErrorReporter
44
47
  autoload :FileUpdateChecker
45
48
  autoload :EventedFileUpdateChecker
46
49
  autoload :ForkTracker
47
50
  autoload :LogSubscriber
51
+ autoload :IsolatedExecutionState
48
52
  autoload :Notifications
49
53
  autoload :Reloader
54
+ autoload :PerThreadRegistry
50
55
  autoload :SecureCompareRotator
51
56
 
52
57
  eager_autoload do
@@ -87,6 +92,17 @@ module ActiveSupport
87
92
  end
88
93
 
89
94
  cattr_accessor :test_order # :nodoc:
95
+ cattr_accessor :test_parallelization_threshold, default: 50 # :nodoc:
96
+
97
+ singleton_class.attr_accessor :error_reporter # :nodoc:
98
+
99
+ def self.cache_format_version
100
+ Cache.format_version
101
+ end
102
+
103
+ def self.cache_format_version=(value)
104
+ Cache.format_version = value
105
+ end
90
106
 
91
107
  def self.to_time_preserves_timezone
92
108
  DateAndTime::Compatibility.preserve_timezone
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activesupport
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.4.1
4
+ version: 7.0.0.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-19 00:00:00.000000000 Z
11
+ date: 2021-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -64,20 +64,6 @@ dependencies:
64
64
  - - ">="
65
65
  - !ruby/object:Gem::Version
66
66
  version: 1.0.2
67
- - !ruby/object:Gem::Dependency
68
- name: zeitwerk
69
- requirement: !ruby/object:Gem::Requirement
70
- requirements:
71
- - - "~>"
72
- - !ruby/object:Gem::Version
73
- version: '2.3'
74
- type: :runtime
75
- prerelease: false
76
- version_requirements: !ruby/object:Gem::Requirement
77
- requirements:
78
- - - "~>"
79
- - !ruby/object:Gem::Version
80
- version: '2.3'
81
67
  - !ruby/object:Gem::Dependency
82
68
  name: minitest
83
69
  requirement: !ruby/object:Gem::Requirement
@@ -119,6 +105,7 @@ files:
119
105
  - lib/active_support/cache/strategy/local_cache.rb
120
106
  - lib/active_support/cache/strategy/local_cache_middleware.rb
121
107
  - lib/active_support/callbacks.rb
108
+ - lib/active_support/code_generator.rb
122
109
  - lib/active_support/concern.rb
123
110
  - lib/active_support/concurrency/load_interlock_aware_monitor.rb
124
111
  - lib/active_support/concurrency/share_lock.rb
@@ -128,6 +115,7 @@ files:
128
115
  - lib/active_support/core_ext/array.rb
129
116
  - lib/active_support/core_ext/array/access.rb
130
117
  - lib/active_support/core_ext/array/conversions.rb
118
+ - lib/active_support/core_ext/array/deprecated_conversions.rb
131
119
  - lib/active_support/core_ext/array/extract.rb
132
120
  - lib/active_support/core_ext/array/extract_options.rb
133
121
  - lib/active_support/core_ext/array/grouping.rb
@@ -145,6 +133,7 @@ files:
145
133
  - lib/active_support/core_ext/date/blank.rb
146
134
  - lib/active_support/core_ext/date/calculations.rb
147
135
  - lib/active_support/core_ext/date/conversions.rb
136
+ - lib/active_support/core_ext/date/deprecated_conversions.rb
148
137
  - lib/active_support/core_ext/date/zones.rb
149
138
  - lib/active_support/core_ext/date_and_time/calculations.rb
150
139
  - lib/active_support/core_ext/date_and_time/compatibility.rb
@@ -155,6 +144,7 @@ files:
155
144
  - lib/active_support/core_ext/date_time/calculations.rb
156
145
  - lib/active_support/core_ext/date_time/compatibility.rb
157
146
  - lib/active_support/core_ext/date_time/conversions.rb
147
+ - lib/active_support/core_ext/date_time/deprecated_conversions.rb
158
148
  - lib/active_support/core_ext/digest.rb
159
149
  - lib/active_support/core_ext/digest/uuid.rb
160
150
  - lib/active_support/core_ext/enumerable.rb
@@ -178,7 +168,6 @@ files:
178
168
  - lib/active_support/core_ext/kernel/reporting.rb
179
169
  - lib/active_support/core_ext/kernel/singleton_class.rb
180
170
  - lib/active_support/core_ext/load_error.rb
181
- - lib/active_support/core_ext/marshal.rb
182
171
  - lib/active_support/core_ext/module.rb
183
172
  - lib/active_support/core_ext/module/aliasing.rb
184
173
  - lib/active_support/core_ext/module/anonymous.rb
@@ -195,6 +184,7 @@ files:
195
184
  - lib/active_support/core_ext/numeric.rb
196
185
  - lib/active_support/core_ext/numeric/bytes.rb
197
186
  - lib/active_support/core_ext/numeric/conversions.rb
187
+ - lib/active_support/core_ext/numeric/deprecated_conversions.rb
198
188
  - lib/active_support/core_ext/numeric/time.rb
199
189
  - lib/active_support/core_ext/object.rb
200
190
  - lib/active_support/core_ext/object/acts_like.rb
@@ -209,9 +199,12 @@ files:
209
199
  - lib/active_support/core_ext/object/to_query.rb
210
200
  - lib/active_support/core_ext/object/try.rb
211
201
  - lib/active_support/core_ext/object/with_options.rb
202
+ - lib/active_support/core_ext/pathname.rb
203
+ - lib/active_support/core_ext/pathname/existence.rb
212
204
  - lib/active_support/core_ext/range.rb
213
205
  - lib/active_support/core_ext/range/compare_range.rb
214
206
  - lib/active_support/core_ext/range/conversions.rb
207
+ - lib/active_support/core_ext/range/deprecated_conversions.rb
215
208
  - lib/active_support/core_ext/range/each.rb
216
209
  - lib/active_support/core_ext/range/include_time_with_zone.rb
217
210
  - lib/active_support/core_ext/range/overlaps.rb
@@ -238,6 +231,7 @@ files:
238
231
  - lib/active_support/core_ext/time/calculations.rb
239
232
  - lib/active_support/core_ext/time/compatibility.rb
240
233
  - lib/active_support/core_ext/time/conversions.rb
234
+ - lib/active_support/core_ext/time/deprecated_conversions.rb
241
235
  - lib/active_support/core_ext/time/zones.rb
242
236
  - lib/active_support/core_ext/uri.rb
243
237
  - lib/active_support/current_attributes.rb
@@ -245,7 +239,7 @@ files:
245
239
  - lib/active_support/dependencies.rb
246
240
  - lib/active_support/dependencies/autoload.rb
247
241
  - lib/active_support/dependencies/interlock.rb
248
- - lib/active_support/dependencies/zeitwerk_integration.rb
242
+ - lib/active_support/dependencies/require_dependency.rb
249
243
  - lib/active_support/deprecation.rb
250
244
  - lib/active_support/deprecation/behaviors.rb
251
245
  - lib/active_support/deprecation/constant_accessor.rb
@@ -262,14 +256,19 @@ files:
262
256
  - lib/active_support/encrypted_configuration.rb
263
257
  - lib/active_support/encrypted_file.rb
264
258
  - lib/active_support/environment_inquirer.rb
259
+ - lib/active_support/error_reporter.rb
265
260
  - lib/active_support/evented_file_update_checker.rb
261
+ - lib/active_support/execution_context.rb
262
+ - lib/active_support/execution_context/test_helper.rb
266
263
  - lib/active_support/execution_wrapper.rb
267
264
  - lib/active_support/executor.rb
265
+ - lib/active_support/executor/test_helper.rb
268
266
  - lib/active_support/file_update_checker.rb
269
267
  - lib/active_support/fork_tracker.rb
270
268
  - lib/active_support/gem_version.rb
271
269
  - lib/active_support/gzip.rb
272
270
  - lib/active_support/hash_with_indifferent_access.rb
271
+ - lib/active_support/html_safe_translation.rb
273
272
  - lib/active_support/i18n.rb
274
273
  - lib/active_support/i18n_railtie.rb
275
274
  - lib/active_support/inflections.rb
@@ -277,6 +276,7 @@ files:
277
276
  - lib/active_support/inflector/inflections.rb
278
277
  - lib/active_support/inflector/methods.rb
279
278
  - lib/active_support/inflector/transliterate.rb
279
+ - lib/active_support/isolated_execution_state.rb
280
280
  - lib/active_support/json.rb
281
281
  - lib/active_support/json/decoding.rb
282
282
  - lib/active_support/json/encoding.rb
@@ -320,6 +320,7 @@ files:
320
320
  - lib/active_support/railtie.rb
321
321
  - lib/active_support/reloader.rb
322
322
  - lib/active_support/rescuable.rb
323
+ - lib/active_support/ruby_features.rb
323
324
  - lib/active_support/secure_compare_rotator.rb
324
325
  - lib/active_support/security_utils.rb
325
326
  - lib/active_support/string_inquirer.rb
@@ -337,6 +338,7 @@ files:
337
338
  - lib/active_support/testing/parallelization.rb
338
339
  - lib/active_support/testing/parallelization/server.rb
339
340
  - lib/active_support/testing/parallelization/worker.rb
341
+ - lib/active_support/testing/parallelize_executor.rb
340
342
  - lib/active_support/testing/setup_and_teardown.rb
341
343
  - lib/active_support/testing/stream.rb
342
344
  - lib/active_support/testing/tagged_logging.rb
@@ -357,10 +359,11 @@ licenses:
357
359
  - MIT
358
360
  metadata:
359
361
  bug_tracker_uri: https://github.com/rails/rails/issues
360
- changelog_uri: https://github.com/rails/rails/blob/v6.1.4.1/activesupport/CHANGELOG.md
361
- documentation_uri: https://api.rubyonrails.org/v6.1.4.1/
362
+ changelog_uri: https://github.com/rails/rails/blob/v7.0.0.rc2/activesupport/CHANGELOG.md
363
+ documentation_uri: https://api.rubyonrails.org/v7.0.0.rc2/
362
364
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
363
- source_code_uri: https://github.com/rails/rails/tree/v6.1.4.1/activesupport
365
+ source_code_uri: https://github.com/rails/rails/tree/v7.0.0.rc2/activesupport
366
+ rubygems_mfa_required: 'true'
364
367
  post_install_message:
365
368
  rdoc_options:
366
369
  - "--encoding"
@@ -371,12 +374,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
371
374
  requirements:
372
375
  - - ">="
373
376
  - !ruby/object:Gem::Version
374
- version: 2.5.0
377
+ version: 2.7.0
375
378
  required_rubygems_version: !ruby/object:Gem::Requirement
376
379
  requirements:
377
- - - ">="
380
+ - - ">"
378
381
  - !ruby/object:Gem::Version
379
- version: '0'
382
+ version: 1.3.1
380
383
  requirements: []
381
384
  rubygems_version: 3.2.15
382
385
  signing_key:
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "active_support/core_ext/string/inflections"
4
-
5
- module ActiveSupport
6
- module MarshalWithAutoloading # :nodoc:
7
- def load(source, proc = nil)
8
- super(source, proc)
9
- rescue ArgumentError, NameError => exc
10
- if exc.message.match(%r|undefined class/module (.+?)(?:::)?\z|)
11
- # try loading the class/module
12
- loaded = $1.constantize
13
-
14
- raise unless $1 == loaded.name
15
-
16
- # if it is an IO we need to go back to read the object
17
- source.rewind if source.respond_to?(:rewind)
18
- retry
19
- else
20
- raise exc
21
- end
22
- end
23
- end
24
- end
25
-
26
- Marshal.singleton_class.prepend(ActiveSupport::MarshalWithAutoloading)