activesupport 8.0.3 → 8.1.0.rc1

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 (96) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +312 -159
  3. data/lib/active_support/backtrace_cleaner.rb +71 -0
  4. data/lib/active_support/cache/mem_cache_store.rb +13 -13
  5. data/lib/active_support/cache/redis_cache_store.rb +36 -30
  6. data/lib/active_support/cache/strategy/local_cache.rb +16 -7
  7. data/lib/active_support/cache/strategy/local_cache_middleware.rb +7 -7
  8. data/lib/active_support/cache.rb +69 -6
  9. data/lib/active_support/callbacks.rb +20 -8
  10. data/lib/active_support/concurrency/load_interlock_aware_monitor.rb +8 -62
  11. data/lib/active_support/concurrency/thread_monitor.rb +55 -0
  12. data/lib/active_support/configurable.rb +28 -0
  13. data/lib/active_support/continuous_integration.rb +145 -0
  14. data/lib/active_support/core_ext/array.rb +7 -7
  15. data/lib/active_support/core_ext/benchmark.rb +4 -12
  16. data/lib/active_support/core_ext/big_decimal.rb +1 -1
  17. data/lib/active_support/core_ext/class/attribute.rb +8 -6
  18. data/lib/active_support/core_ext/class.rb +2 -2
  19. data/lib/active_support/core_ext/date.rb +5 -5
  20. data/lib/active_support/core_ext/date_and_time/compatibility.rb +0 -35
  21. data/lib/active_support/core_ext/date_time/compatibility.rb +3 -5
  22. data/lib/active_support/core_ext/date_time.rb +5 -5
  23. data/lib/active_support/core_ext/digest.rb +1 -1
  24. data/lib/active_support/core_ext/enumerable.rb +2 -2
  25. data/lib/active_support/core_ext/erb/util.rb +3 -3
  26. data/lib/active_support/core_ext/file.rb +1 -1
  27. data/lib/active_support/core_ext/hash.rb +8 -8
  28. data/lib/active_support/core_ext/integer.rb +3 -3
  29. data/lib/active_support/core_ext/kernel.rb +3 -3
  30. data/lib/active_support/core_ext/module.rb +11 -11
  31. data/lib/active_support/core_ext/numeric.rb +3 -3
  32. data/lib/active_support/core_ext/object/json.rb +8 -1
  33. data/lib/active_support/core_ext/object/to_query.rb +5 -0
  34. data/lib/active_support/core_ext/object.rb +13 -13
  35. data/lib/active_support/core_ext/pathname.rb +2 -2
  36. data/lib/active_support/core_ext/range.rb +4 -5
  37. data/lib/active_support/core_ext/string/multibyte.rb +10 -1
  38. data/lib/active_support/core_ext/string/output_safety.rb +19 -12
  39. data/lib/active_support/core_ext/string.rb +13 -13
  40. data/lib/active_support/core_ext/symbol.rb +1 -1
  41. data/lib/active_support/core_ext/time/calculations.rb +0 -7
  42. data/lib/active_support/core_ext/time/compatibility.rb +2 -27
  43. data/lib/active_support/core_ext/time.rb +5 -5
  44. data/lib/active_support/core_ext.rb +1 -1
  45. data/lib/active_support/current_attributes/test_helper.rb +2 -2
  46. data/lib/active_support/current_attributes.rb +13 -10
  47. data/lib/active_support/dependencies/interlock.rb +11 -5
  48. data/lib/active_support/dependencies.rb +6 -1
  49. data/lib/active_support/deprecation/reporting.rb +4 -2
  50. data/lib/active_support/deprecation.rb +1 -1
  51. data/lib/active_support/editor.rb +70 -0
  52. data/lib/active_support/error_reporter.rb +50 -6
  53. data/lib/active_support/event_reporter/test_helper.rb +32 -0
  54. data/lib/active_support/event_reporter.rb +592 -0
  55. data/lib/active_support/evented_file_update_checker.rb +5 -1
  56. data/lib/active_support/execution_context.rb +64 -7
  57. data/lib/active_support/file_update_checker.rb +7 -5
  58. data/lib/active_support/gem_version.rb +3 -3
  59. data/lib/active_support/gzip.rb +1 -0
  60. data/lib/active_support/hash_with_indifferent_access.rb +27 -7
  61. data/lib/active_support/i18n_railtie.rb +1 -2
  62. data/lib/active_support/inflector/inflections.rb +31 -15
  63. data/lib/active_support/inflector/transliterate.rb +6 -8
  64. data/lib/active_support/isolated_execution_state.rb +12 -15
  65. data/lib/active_support/json/decoding.rb +2 -2
  66. data/lib/active_support/json/encoding.rb +135 -17
  67. data/lib/active_support/log_subscriber.rb +2 -6
  68. data/lib/active_support/message_encryptors.rb +52 -0
  69. data/lib/active_support/message_pack/extensions.rb +5 -0
  70. data/lib/active_support/message_verifiers.rb +52 -0
  71. data/lib/active_support/messages/rotation_coordinator.rb +9 -0
  72. data/lib/active_support/messages/rotator.rb +5 -0
  73. data/lib/active_support/multibyte/chars.rb +8 -1
  74. data/lib/active_support/multibyte.rb +4 -0
  75. data/lib/active_support/notifications/fanout.rb +64 -42
  76. data/lib/active_support/notifications/instrumenter.rb +1 -1
  77. data/lib/active_support/railtie.rb +32 -15
  78. data/lib/active_support/structured_event_subscriber.rb +99 -0
  79. data/lib/active_support/subscriber.rb +0 -5
  80. data/lib/active_support/syntax_error_proxy.rb +3 -0
  81. data/lib/active_support/test_case.rb +61 -6
  82. data/lib/active_support/testing/assertions.rb +34 -6
  83. data/lib/active_support/testing/error_reporter_assertions.rb +18 -1
  84. data/lib/active_support/testing/event_reporter_assertions.rb +227 -0
  85. data/lib/active_support/testing/notification_assertions.rb +92 -0
  86. data/lib/active_support/testing/parallelization/server.rb +15 -2
  87. data/lib/active_support/testing/parallelization/worker.rb +4 -2
  88. data/lib/active_support/testing/parallelization.rb +25 -1
  89. data/lib/active_support/testing/tests_without_assertions.rb +1 -1
  90. data/lib/active_support/testing/time_helpers.rb +7 -3
  91. data/lib/active_support/time_with_zone.rb +22 -22
  92. data/lib/active_support/values/time_zone.rb +8 -1
  93. data/lib/active_support/xml_mini.rb +3 -2
  94. data/lib/active_support.rb +23 -14
  95. metadata +24 -17
  96. data/lib/active_support/core_ext/range/each.rb +0 -24
@@ -238,12 +238,16 @@ module ActiveSupport
238
238
  end
239
239
  alias_method :unfreeze_time, :travel_back
240
240
 
241
- # Calls +travel_to+ with +Time.now+. Forwards optional <tt>with_usec</tt> argument.
241
+ # Calls +travel_to+ with +date_or_time+, which defaults to +Time.now+.
242
+ # Forwards optional <tt>with_usec</tt> argument.
242
243
  #
243
244
  # Time.current # => Sun, 09 Jul 2017 15:34:49 EST -05:00
244
245
  # freeze_time
245
246
  # sleep(1)
246
247
  # Time.current # => Sun, 09 Jul 2017 15:34:49 EST -05:00
248
+ # freeze_time Time.current + 1.day
249
+ # sleep(1)
250
+ # Time.current # => Mon, 10 Jul 2017 15:34:49 EST -05:00
247
251
  #
248
252
  # This method also accepts a block, which will return the current time back to its original
249
253
  # state at the end of the block:
@@ -254,8 +258,8 @@ module ActiveSupport
254
258
  # User.create.created_at # => Sun, 09 Jul 2017 15:34:49 EST -05:00
255
259
  # end
256
260
  # Time.current # => Sun, 09 Jul 2017 15:34:50 EST -05:00
257
- def freeze_time(with_usec: false, &block)
258
- travel_to Time.now, with_usec: with_usec, &block
261
+ def freeze_time(date_or_time = Time.now, with_usec: false, &block)
262
+ travel_to date_or_time, with_usec: with_usec, &block
259
263
  end
260
264
 
261
265
  private
@@ -49,9 +49,15 @@ module ActiveSupport
49
49
  attr_reader :time_zone
50
50
 
51
51
  def initialize(utc_time, time_zone, local_time = nil, period = nil)
52
- @utc = utc_time ? transfer_time_values_to_utc_constructor(utc_time) : nil
53
52
  @time_zone, @time = time_zone, local_time
54
- @period = @utc ? period : get_period_and_ensure_valid_local_time(period)
53
+ if utc_time
54
+ @utc = transfer_time_values_to_utc_constructor(utc_time)
55
+ @period = period
56
+ else
57
+ @utc = nil
58
+ @period = get_period_and_ensure_valid_local_time(period)
59
+ end
60
+ @is_utc = zone == "UTC" || zone == "UCT"
55
61
  end
56
62
 
57
63
  # Returns a <tt>Time</tt> instance that represents the time in +time_zone+.
@@ -103,7 +109,7 @@ module ActiveSupport
103
109
  # Time.zone = 'Eastern Time (US & Canada)' # => 'Eastern Time (US & Canada)'
104
110
  # Time.zone.now.utc? # => false
105
111
  def utc?
106
- zone == "UTC" || zone == "UCT"
112
+ @is_utc
107
113
  end
108
114
  alias_method :gmt?, :utc?
109
115
 
@@ -146,7 +152,13 @@ module ActiveSupport
146
152
  #
147
153
  # Time.zone.now.xmlschema # => "2014-12-04T11:02:37-05:00"
148
154
  def xmlschema(fraction_digits = 0)
149
- "#{time.strftime(PRECISIONS[fraction_digits.to_i])}#{formatted_offset(true, 'Z')}"
155
+ if @is_utc
156
+ utc.iso8601(fraction_digits || 0)
157
+ else
158
+ str = time.iso8601(fraction_digits || 0)
159
+ str[-1] = formatted_offset(true, "Z")
160
+ str
161
+ end
150
162
  end
151
163
  alias_method :iso8601, :xmlschema
152
164
  alias_method :rfc3339, :xmlschema
@@ -299,16 +311,8 @@ module ActiveSupport
299
311
  if duration_of_variable_length?(other)
300
312
  method_missing(:+, other)
301
313
  else
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
314
+ result = utc + other
315
+
312
316
  result.in_time_zone(time_zone)
313
317
  end
314
318
  end
@@ -491,13 +495,7 @@ module ActiveSupport
491
495
  # with the same UTC offset as +self+ or in the local system timezone
492
496
  # depending on the setting of +ActiveSupport.to_time_preserves_timezone+.
493
497
  def to_time
494
- if preserve_timezone == :zone
495
- @to_time_with_timezone ||= getlocal(time_zone)
496
- elsif preserve_timezone
497
- @to_time_with_instance_offset ||= getlocal(utc_offset)
498
- else
499
- @to_time_with_system_offset ||= getlocal
500
- end
498
+ @to_time_with_timezone ||= getlocal(time_zone)
501
499
  end
502
500
 
503
501
  # So that +self+ <tt>acts_like?(:time)</tt>.
@@ -560,7 +558,9 @@ module ActiveSupport
560
558
  SECONDS_PER_DAY = 86400
561
559
 
562
560
  def incorporate_utc_offset(time, offset)
563
- if time.kind_of?(Date)
561
+ if offset.zero?
562
+ time
563
+ elsif time.kind_of?(Date)
564
564
  time + Rational(offset, SECONDS_PER_DAY)
565
565
  else
566
566
  time + offset
@@ -57,13 +57,14 @@ module ActiveSupport
57
57
  "Caracas" => "America/Caracas",
58
58
  "La Paz" => "America/La_Paz",
59
59
  "Santiago" => "America/Santiago",
60
+ "Asuncion" => "America/Asuncion",
60
61
  "Newfoundland" => "America/St_Johns",
61
62
  "Brasilia" => "America/Sao_Paulo",
62
63
  "Buenos Aires" => "America/Argentina/Buenos_Aires",
63
64
  "Montevideo" => "America/Montevideo",
64
65
  "Georgetown" => "America/Guyana",
65
66
  "Puerto Rico" => "America/Puerto_Rico",
66
- "Greenland" => "America/Godthab",
67
+ "Greenland" => "America/Nuuk",
67
68
  "Mid-Atlantic" => "Atlantic/South_Georgia",
68
69
  "Azores" => "Atlantic/Azores",
69
70
  "Cape Verde Is." => "Atlantic/Cape_Verde",
@@ -313,6 +314,12 @@ module ActiveSupport
313
314
  end
314
315
  # :startdoc:
315
316
 
317
+ # Returns a standard time zone name defined by IANA
318
+ # https://www.iana.org/time-zones
319
+ def standard_name
320
+ MAPPING[name] || name
321
+ end
322
+
316
323
  # Returns the offset of this time zone from UTC in seconds.
317
324
  def utc_offset
318
325
  @utc_offset || tzinfo&.current_period&.base_utc_offset
@@ -62,11 +62,10 @@ module ActiveSupport
62
62
  "yaml" => Proc.new { |yaml| yaml.to_yaml }
63
63
  } unless defined?(FORMATTING)
64
64
 
65
- # TODO use regexp instead of Date.parse
66
65
  unless defined?(PARSING)
67
66
  PARSING = {
68
67
  "symbol" => Proc.new { |symbol| symbol.to_s.to_sym },
69
- "date" => Proc.new { |date| ::Date.parse(date) },
68
+ "date" => Proc.new { |date| ::Date.strptime(date, "%Y-%m-%d") },
70
69
  "datetime" => Proc.new { |time| Time.xmlschema(time).utc rescue ::DateTime.parse(time).utc },
71
70
  "duration" => Proc.new { |duration| Duration.parse(duration) },
72
71
  "integer" => Proc.new { |integer| integer.to_i },
@@ -74,6 +73,8 @@ module ActiveSupport
74
73
  "decimal" => Proc.new do |number|
75
74
  if String === number
76
75
  number.to_d
76
+ elsif Float === number
77
+ BigDecimal(number, 0)
77
78
  else
78
79
  BigDecimal(number)
79
80
  end
@@ -40,16 +40,20 @@ module ActiveSupport
40
40
  autoload :CodeGenerator
41
41
  autoload :ActionableError
42
42
  autoload :ConfigurationFile
43
+ autoload :ContinuousIntegration
43
44
  autoload :CurrentAttributes
44
45
  autoload :Dependencies
45
46
  autoload :DescendantsTracker
47
+ autoload :Editor
46
48
  autoload :ExecutionWrapper
47
49
  autoload :Executor
48
50
  autoload :ErrorReporter
51
+ autoload :EventReporter
49
52
  autoload :FileUpdateChecker
50
53
  autoload :EventedFileUpdateChecker
51
54
  autoload :ForkTracker
52
55
  autoload :LogSubscriber
56
+ autoload :StructuredEventSubscriber
53
57
  autoload :IsolatedExecutionState
54
58
  autoload :Notifications
55
59
  autoload :Reloader
@@ -91,6 +95,10 @@ module ActiveSupport
91
95
  autoload :SafeBuffer, "active_support/core_ext/string/output_safety"
92
96
  autoload :TestCase
93
97
 
98
+ include Deprecation::DeprecatedConstantAccessor
99
+
100
+ deprecate_constant :Configurable, "class_attribute :config, default: {}", deprecator: ActiveSupport.deprecator
101
+
94
102
  def self.eager_load!
95
103
  super
96
104
 
@@ -99,10 +107,16 @@ module ActiveSupport
99
107
 
100
108
  cattr_accessor :test_order # :nodoc:
101
109
  cattr_accessor :test_parallelization_threshold, default: 50 # :nodoc:
110
+ cattr_accessor :parallelize_test_databases, default: true # :nodoc:
102
111
 
103
112
  @error_reporter = ActiveSupport::ErrorReporter.new
104
113
  singleton_class.attr_accessor :error_reporter # :nodoc:
105
114
 
115
+ @event_reporter = ActiveSupport::EventReporter.new
116
+ singleton_class.attr_accessor :event_reporter # :nodoc:
117
+
118
+ cattr_accessor :filter_parameters, default: [] # :nodoc:
119
+
106
120
  def self.cache_format_version
107
121
  Cache.format_version
108
122
  end
@@ -112,23 +126,18 @@ module ActiveSupport
112
126
  end
113
127
 
114
128
  def self.to_time_preserves_timezone
115
- DateAndTime::Compatibility.preserve_timezone
129
+ ActiveSupport.deprecator.warn(
130
+ "`config.active_support.to_time_preserves_timezone` is deprecated and will be removed in Rails 8.2"
131
+ )
132
+ @to_time_preserves_timezone
116
133
  end
117
134
 
118
135
  def self.to_time_preserves_timezone=(value)
119
- if !value
120
- ActiveSupport.deprecator.warn(
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`."
128
- )
129
- end
130
-
131
- DateAndTime::Compatibility.preserve_timezone = value
136
+ ActiveSupport.deprecator.warn(
137
+ "`config.active_support.to_time_preserves_timezone` is deprecated and will be removed in Rails 8.2"
138
+ )
139
+
140
+ @to_time_preserves_timezone = value
132
141
  end
133
142
 
134
143
  def self.utc_to_local_returns_utc_offset_times
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activesupport
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.0.3
4
+ version: 8.1.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
@@ -140,61 +140,61 @@ dependencies:
140
140
  - !ruby/object:Gem::Version
141
141
  version: '0'
142
142
  - !ruby/object:Gem::Dependency
143
- name: logger
143
+ name: json
144
144
  requirement: !ruby/object:Gem::Requirement
145
145
  requirements:
146
146
  - - ">="
147
147
  - !ruby/object:Gem::Version
148
- version: 1.4.2
148
+ version: '0'
149
149
  type: :runtime
150
150
  prerelease: false
151
151
  version_requirements: !ruby/object:Gem::Requirement
152
152
  requirements:
153
153
  - - ">="
154
154
  - !ruby/object:Gem::Version
155
- version: 1.4.2
155
+ version: '0'
156
156
  - !ruby/object:Gem::Dependency
157
- name: securerandom
157
+ name: logger
158
158
  requirement: !ruby/object:Gem::Requirement
159
159
  requirements:
160
160
  - - ">="
161
161
  - !ruby/object:Gem::Version
162
- version: '0.3'
162
+ version: 1.4.2
163
163
  type: :runtime
164
164
  prerelease: false
165
165
  version_requirements: !ruby/object:Gem::Requirement
166
166
  requirements:
167
167
  - - ">="
168
168
  - !ruby/object:Gem::Version
169
- version: '0.3'
169
+ version: 1.4.2
170
170
  - !ruby/object:Gem::Dependency
171
- name: uri
171
+ name: securerandom
172
172
  requirement: !ruby/object:Gem::Requirement
173
173
  requirements:
174
174
  - - ">="
175
175
  - !ruby/object:Gem::Version
176
- version: 0.13.1
176
+ version: '0.3'
177
177
  type: :runtime
178
178
  prerelease: false
179
179
  version_requirements: !ruby/object:Gem::Requirement
180
180
  requirements:
181
181
  - - ">="
182
182
  - !ruby/object:Gem::Version
183
- version: 0.13.1
183
+ version: '0.3'
184
184
  - !ruby/object:Gem::Dependency
185
- name: benchmark
185
+ name: uri
186
186
  requirement: !ruby/object:Gem::Requirement
187
187
  requirements:
188
188
  - - ">="
189
189
  - !ruby/object:Gem::Version
190
- version: '0.3'
190
+ version: 0.13.1
191
191
  type: :runtime
192
192
  prerelease: false
193
193
  version_requirements: !ruby/object:Gem::Requirement
194
194
  requirements:
195
195
  - - ">="
196
196
  - !ruby/object:Gem::Version
197
- version: '0.3'
197
+ version: 0.13.1
198
198
  description: A toolkit of support libraries and Ruby core extensions extracted from
199
199
  the Rails framework. Rich support for multibyte strings, internationalization, time
200
200
  zones, and testing.
@@ -233,8 +233,10 @@ files:
233
233
  - lib/active_support/concurrency/load_interlock_aware_monitor.rb
234
234
  - lib/active_support/concurrency/null_lock.rb
235
235
  - lib/active_support/concurrency/share_lock.rb
236
+ - lib/active_support/concurrency/thread_monitor.rb
236
237
  - lib/active_support/configurable.rb
237
238
  - lib/active_support/configuration_file.rb
239
+ - lib/active_support/continuous_integration.rb
238
240
  - lib/active_support/core_ext.rb
239
241
  - lib/active_support/core_ext/array.rb
240
242
  - lib/active_support/core_ext/array/access.rb
@@ -327,7 +329,6 @@ files:
327
329
  - lib/active_support/core_ext/range.rb
328
330
  - lib/active_support/core_ext/range/compare_range.rb
329
331
  - lib/active_support/core_ext/range/conversions.rb
330
- - lib/active_support/core_ext/range/each.rb
331
332
  - lib/active_support/core_ext/range/overlap.rb
332
333
  - lib/active_support/core_ext/range/sole.rb
333
334
  - lib/active_support/core_ext/regexp.rb
@@ -377,11 +378,14 @@ files:
377
378
  - lib/active_support/duration.rb
378
379
  - lib/active_support/duration/iso8601_parser.rb
379
380
  - lib/active_support/duration/iso8601_serializer.rb
381
+ - lib/active_support/editor.rb
380
382
  - lib/active_support/encrypted_configuration.rb
381
383
  - lib/active_support/encrypted_file.rb
382
384
  - lib/active_support/environment_inquirer.rb
383
385
  - lib/active_support/error_reporter.rb
384
386
  - lib/active_support/error_reporter/test_helper.rb
387
+ - lib/active_support/event_reporter.rb
388
+ - lib/active_support/event_reporter/test_helper.rb
385
389
  - lib/active_support/evented_file_update_checker.rb
386
390
  - lib/active_support/execution_context.rb
387
391
  - lib/active_support/execution_context/test_helper.rb
@@ -455,6 +459,7 @@ files:
455
459
  - lib/active_support/secure_compare_rotator.rb
456
460
  - lib/active_support/security_utils.rb
457
461
  - lib/active_support/string_inquirer.rb
462
+ - lib/active_support/structured_event_subscriber.rb
458
463
  - lib/active_support/subscriber.rb
459
464
  - lib/active_support/syntax_error_proxy.rb
460
465
  - lib/active_support/tagged_logging.rb
@@ -466,9 +471,11 @@ files:
466
471
  - lib/active_support/testing/declarative.rb
467
472
  - lib/active_support/testing/deprecation.rb
468
473
  - lib/active_support/testing/error_reporter_assertions.rb
474
+ - lib/active_support/testing/event_reporter_assertions.rb
469
475
  - lib/active_support/testing/file_fixtures.rb
470
476
  - lib/active_support/testing/isolation.rb
471
477
  - lib/active_support/testing/method_call_assertions.rb
478
+ - lib/active_support/testing/notification_assertions.rb
472
479
  - lib/active_support/testing/parallelization.rb
473
480
  - lib/active_support/testing/parallelization/server.rb
474
481
  - lib/active_support/testing/parallelization/worker.rb
@@ -494,10 +501,10 @@ licenses:
494
501
  - MIT
495
502
  metadata:
496
503
  bug_tracker_uri: https://github.com/rails/rails/issues
497
- changelog_uri: https://github.com/rails/rails/blob/v8.0.3/activesupport/CHANGELOG.md
498
- documentation_uri: https://api.rubyonrails.org/v8.0.3/
504
+ changelog_uri: https://github.com/rails/rails/blob/v8.1.0.rc1/activesupport/CHANGELOG.md
505
+ documentation_uri: https://api.rubyonrails.org/v8.1.0.rc1/
499
506
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
500
- source_code_uri: https://github.com/rails/rails/tree/v8.0.3/activesupport
507
+ source_code_uri: https://github.com/rails/rails/tree/v8.1.0.rc1/activesupport
501
508
  rubygems_mfa_required: 'true'
502
509
  rdoc_options:
503
510
  - "--encoding"
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "active_support/time_with_zone"
4
-
5
- module ActiveSupport
6
- module EachTimeWithZone # :nodoc:
7
- def each(&block)
8
- ensure_iteration_allowed
9
- super
10
- end
11
-
12
- def step(n = 1, &block)
13
- ensure_iteration_allowed
14
- super
15
- end
16
-
17
- private
18
- def ensure_iteration_allowed
19
- raise TypeError, "can't iterate from #{first.class}" if first.is_a?(TimeWithZone)
20
- end
21
- end
22
- end
23
-
24
- Range.prepend(ActiveSupport::EachTimeWithZone)