activesupport 7.0.6 → 7.0.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 817ceee259b12be4eff5b6dce8d0a471f80a6e103e9fa3ddb7846889f617df14
4
- data.tar.gz: f6cac911c197763c9244a04fcf77e6065b778c607e1ec4e132fd21f2f07a114d
3
+ metadata.gz: 8f54026bf0b86c232b4ce46a96f39aa94fe8acdad8eae5c0a194046f896dc0ff
4
+ data.tar.gz: 3762e1c4397383cb90c0fe6513e260194c1af0afa0292284842953d5153d621a
5
5
  SHA512:
6
- metadata.gz: 6b65a232e1c6e638092aaf4953fa6e876199568367922159498cdc46b2ebad6456e2ab78d81bbfcad8a9e4f6e4303ff797a1efacf98c3994b710bb25ffeff391
7
- data.tar.gz: 1d3d4c10c667ea3ce71033128ba6634347cdcaf30d8141fa1888d76978754187ec0d0e3a33c6a506da7669e99d030e1a0553f77a36e537d427fd223d478278e7
6
+ metadata.gz: 74194c0b535b0ae5b29e32c85f205bf45a7626200f9946582627c440fa19cd9a8547109f3b1e21d66086a64cae8d83248fb39848cf9bf6f47319fa224c11e538
7
+ data.tar.gz: 3cead0a36efa404c9d1b92b1b7330e797f0802b146a20f8a5468ca7ff4c401cab628aa4ee7578cef133298f4edf4da3b95a0df294a962c4de0ac997da1afc421
data/CHANGELOG.md CHANGED
@@ -1,3 +1,53 @@
1
+ ## Rails 7.0.8 (September 09, 2023) ##
2
+
3
+ * Fix `TimeWithZone` still using deprecated `#to_s` when `ENV` or `config` to
4
+ disable it are set.
5
+
6
+ *Hartley McGuire*
7
+
8
+ * Fix CacheStore#write_multi when using a distributed Redis cache with a connection pool.
9
+
10
+ Fixes [#48938](https://github.com/rails/rails/issues/48938).
11
+
12
+ *Jonathan del Strother*
13
+
14
+
15
+ ## Rails 7.0.7.2 (August 22, 2023) ##
16
+
17
+ * No changes.
18
+
19
+
20
+ ## Rails 7.0.7.1 (August 22, 2023) ##
21
+
22
+ * Use a temporary file for storing unencrypted files while editing
23
+
24
+ [CVE-2023-38037]
25
+
26
+
27
+ ## Rails 7.0.7 (August 09, 2023) ##
28
+
29
+ * Fix `Cache::NullStore` with local caching for repeated reads.
30
+
31
+ *fatkodima*
32
+
33
+ * Fix `to_s` with no arguments not respecting custom `:default` formats
34
+
35
+ *Hartley McGuire*
36
+
37
+ * Fix `ActiveSupport::Inflector.humanize(nil)` raising ``NoMethodError: undefined method `end_with?' for nil:NilClass``.
38
+
39
+ *James Robinson*
40
+
41
+ * Fix `Enumerable#sum` for `Enumerator#lazy`.
42
+
43
+ *fatkodima*, *Matthew Draper*, *Jonathan Hefner*
44
+
45
+ * Improve error message when EventedFileUpdateChecker is used without a
46
+ compatible version of the Listen gem
47
+
48
+ *Hartley McGuire*
49
+
50
+
1
51
  ## Rails 7.0.6 (June 29, 2023) ##
2
52
 
3
53
  * Fix `EncryptedConfiguration` returning incorrect values for some `Hash`
@@ -313,13 +313,15 @@ module ActiveSupport
313
313
 
314
314
  private
315
315
  def set_redis_capabilities
316
- case redis
317
- when Redis::Distributed
318
- @mget_capable = true
319
- @mset_capable = false
320
- else
321
- @mget_capable = true
322
- @mset_capable = true
316
+ redis.with do |c|
317
+ case c
318
+ when Redis::Distributed
319
+ @mget_capable = true
320
+ @mset_capable = false
321
+ else
322
+ @mget_capable = true
323
+ @mset_capable = true
324
+ end
323
325
  end
324
326
  end
325
327
 
@@ -124,7 +124,7 @@ module ActiveSupport
124
124
 
125
125
  local_entries = local_cache.read_multi_entries(keys)
126
126
  local_entries.transform_values! do |payload|
127
- deserialize_entry(payload).value
127
+ deserialize_entry(payload)&.value
128
128
  end
129
129
  missed_keys = keys - local_entries.keys
130
130
 
@@ -15,7 +15,21 @@ class Date
15
15
  strftime(formatter)
16
16
  end
17
17
  elsif format == NOT_SET
18
- to_default_s
18
+ if formatter = DATE_FORMATS[:default]
19
+ ActiveSupport::Deprecation.warn(<<-MSG.squish)
20
+ Using a :default format for Date#to_s is deprecated. Please use Date#to_fs instead. If you fixed all places
21
+ inside your application that you see this deprecation, you can set
22
+ `ENV['RAILS_DISABLE_DEPRECATED_TO_S_CONVERSION']` to `"true"` in the `config/application.rb` file before
23
+ the `Bundler.require` call to fix all the callers outside of your application.
24
+ MSG
25
+ if formatter.respond_to?(:call)
26
+ formatter.call(self).to_s
27
+ else
28
+ strftime(formatter)
29
+ end
30
+ else
31
+ to_default_s
32
+ end
19
33
  else
20
34
  ActiveSupport::Deprecation.warn(
21
35
  "Date#to_s(#{format.inspect}) is deprecated. Please use Date#to_fs(#{format.inspect}) instead."
@@ -11,7 +11,21 @@ class DateTime
11
11
  )
12
12
  formatter.respond_to?(:call) ? formatter.call(self).to_s : strftime(formatter)
13
13
  elsif format == NOT_SET
14
- to_default_s
14
+ if formatter = ::Time::DATE_FORMATS[:default]
15
+ ActiveSupport::Deprecation.warn(<<-MSG.squish)
16
+ Using a :default format for DateTime#to_s is deprecated. Please use DateTime#to_fs instead. If you fixed all
17
+ places inside your application that you see this deprecation, you can set
18
+ `ENV['RAILS_DISABLE_DEPRECATED_TO_S_CONVERSION']` to `"true"` in the `config/application.rb` file before
19
+ the `Bundler.require` call to fix all the callers outside of your application.
20
+ MSG
21
+ if formatter.respond_to?(:call)
22
+ formatter.call(self).to_s
23
+ else
24
+ strftime(formatter)
25
+ end
26
+ else
27
+ to_default_s
28
+ end
15
29
  else
16
30
  ActiveSupport::Deprecation.warn(
17
31
  "DateTime#to_s(#{format.inspect}) is deprecated. Please use DateTime#to_fs(#{format.inspect}) instead."
@@ -76,19 +76,24 @@ module Enumerable
76
76
  _original_sum_with_required_identity(identity, &block)
77
77
  elsif block_given?
78
78
  map(&block).sum
79
- # we check `first(1) == []` to check if we have an
80
- # empty Enumerable; checking `empty?` would return
81
- # true for `[nil]`, which we want to deprecate to
82
- # keep consistent with Ruby
83
- elsif first.is_a?(Numeric) || first(1) == [] || first.respond_to?(:coerce)
84
- identity ||= 0
85
- _original_sum_with_required_identity(identity, &block)
86
79
  else
87
- ActiveSupport::Deprecation.warn(<<-MSG.squish)
88
- Rails 7.0 has deprecated Enumerable.sum in favor of Ruby's native implementation available since 2.4.
89
- Sum of non-numeric elements requires an initial argument.
90
- MSG
91
- inject(:+) || 0
80
+ first = true
81
+
82
+ reduce(nil) do |sum, value|
83
+ if first
84
+ first = false
85
+
86
+ unless value.is_a?(Numeric) || value.respond_to?(:coerce)
87
+ ActiveSupport::Deprecation.warn(<<-MSG.squish)
88
+ Rails 7.0 has deprecated Enumerable.sum in favor of Ruby's native implementation available since 2.4.
89
+ Sum of non-numeric elements requires an initial argument.
90
+ MSG
91
+ end
92
+ value
93
+ else
94
+ sum + value
95
+ end
96
+ end || 0
92
97
  end
93
98
  end
94
99
 
@@ -10,7 +10,17 @@ module ActiveSupport
10
10
  )
11
11
  formatter.call(first, last)
12
12
  elsif format == NOT_SET
13
- super()
13
+ if formatter = RangeWithFormat::RANGE_FORMATS[:default]
14
+ ActiveSupport::Deprecation.warn(<<-MSG.squish)
15
+ Using a :default format for Range#to_s is deprecated. Please use Range#to_fs instead. If you fixed all
16
+ places inside your application that you see this deprecation, you can set
17
+ `ENV['RAILS_DISABLE_DEPRECATED_TO_S_CONVERSION']` to `"true"` in the `config/application.rb` file before
18
+ the `Bundler.require` call to fix all the callers outside of your application.
19
+ MSG
20
+ formatter.call(first, last)
21
+ else
22
+ super()
23
+ end
14
24
  else
15
25
  ActiveSupport::Deprecation.warn(
16
26
  "Range#to_s(#{format.inspect}) is deprecated. Please use Range#to_fs(#{format.inspect}) instead."
@@ -11,7 +11,21 @@ class Time
11
11
  )
12
12
  formatter.respond_to?(:call) ? formatter.call(self).to_s : strftime(formatter)
13
13
  elsif format == NOT_SET
14
- to_default_s
14
+ if formatter = ::Time::DATE_FORMATS[:default]
15
+ ActiveSupport::Deprecation.warn(<<-MSG.squish)
16
+ Using a :default format for Time#to_s is deprecated. Please use Time#to_fs instead. If you fixed all places
17
+ inside your application that you see this deprecation, you can set
18
+ `ENV['RAILS_DISABLE_DEPRECATED_TO_S_CONVERSION']` to `"true"` in the `config/application.rb` file before
19
+ the `Bundler.require` call to fix all the callers outside of your application.
20
+ MSG
21
+ if formatter.respond_to?(:call)
22
+ formatter.call(self).to_s
23
+ else
24
+ strftime(formatter)
25
+ end
26
+ else
27
+ to_default_s
28
+ end
15
29
  else
16
30
  ActiveSupport::Deprecation.warn(
17
31
  "Time#to_s(#{format.inspect}) is deprecated. Please use Time#to_fs(#{format.inspect}) instead."
@@ -20,3 +34,40 @@ class Time
20
34
  end
21
35
  end
22
36
  end
37
+
38
+ module ActiveSupport
39
+ class TimeWithZone
40
+ NOT_SET = Object.new # :nodoc:
41
+
42
+ def to_s(format = NOT_SET) # :nodoc:
43
+ if format == :db
44
+ ActiveSupport::Deprecation.warn(
45
+ "TimeWithZone#to_s(:db) is deprecated. Please use TimeWithZone#to_fs(:db) instead."
46
+ )
47
+ utc.to_fs(format)
48
+ elsif formatter = ::Time::DATE_FORMATS[format]
49
+ ActiveSupport::Deprecation.warn(
50
+ "TimeWithZone#to_s(#{format.inspect}) is deprecated. Please use TimeWithZone#to_fs(#{format.inspect}) instead."
51
+ )
52
+ formatter.respond_to?(:call) ? formatter.call(self).to_s : strftime(formatter)
53
+ elsif format == NOT_SET
54
+ if formatter = ::Time::DATE_FORMATS[:default]
55
+ ActiveSupport::Deprecation.warn(<<-MSG.squish)
56
+ Using a :default format for TimeWithZone#to_s is deprecated. Please use TimeWithZone#to_fs instead.
57
+ If you fixed all places inside your application that you see this deprecation, you can set
58
+ `ENV['RAILS_DISABLE_DEPRECATED_TO_S_CONVERSION']` to `"true"` in the `config/application.rb` file before
59
+ the `Bundler.require` call to fix all the callers outside of your application.
60
+ MSG
61
+ formatter.respond_to?(:call) ? formatter.call(self).to_s : strftime(formatter)
62
+ else
63
+ "#{time.strftime("%Y-%m-%d %H:%M:%S")} #{formatted_offset(false, 'UTC')}" # mimicking Ruby Time#to_s format
64
+ end
65
+ else
66
+ ActiveSupport::Deprecation.warn(
67
+ "TimeWithZone#to_s(#{format.inspect}) is deprecated. Please use TimeWithZone#to_fs(#{format.inspect}) instead."
68
+ )
69
+ "#{time.strftime("%Y-%m-%d %H:%M:%S")} #{formatted_offset(false, 'UTC')}" # mimicking Ruby Time#to_s format
70
+ end
71
+ end
72
+ end
73
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "pathname"
4
- require "tmpdir"
4
+ require "tempfile"
5
5
  require "active_support/message_encryptor"
6
6
 
7
7
  module ActiveSupport
@@ -81,17 +81,16 @@ module ActiveSupport
81
81
 
82
82
  private
83
83
  def writing(contents)
84
- tmp_file = "#{Process.pid}.#{content_path.basename.to_s.chomp('.enc')}"
85
- tmp_path = Pathname.new File.join(Dir.tmpdir, tmp_file)
86
- tmp_path.binwrite contents
84
+ Tempfile.create(["", "-" + content_path.basename.to_s.chomp(".enc")]) do |tmp_file|
85
+ tmp_path = Pathname.new(tmp_file)
86
+ tmp_path.binwrite contents
87
87
 
88
- yield tmp_path
88
+ yield tmp_path
89
89
 
90
- updated_contents = tmp_path.binread
90
+ updated_contents = tmp_path.binread
91
91
 
92
- write(updated_contents) if updated_contents != contents
93
- ensure
94
- FileUtils.rm(tmp_path) if tmp_path&.exist?
92
+ write(updated_contents) if updated_contents != contents
93
+ end
95
94
  end
96
95
 
97
96
 
@@ -1,9 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ gem "listen", "~> 3.5"
4
+ require "listen"
5
+
3
6
  require "set"
4
7
  require "pathname"
5
8
  require "concurrent/atomic/atomic_boolean"
6
- require "listen"
7
9
  require "active_support/fork_tracker"
8
10
 
9
11
  module ActiveSupport
@@ -9,7 +9,7 @@ module ActiveSupport
9
9
  module VERSION
10
10
  MAJOR = 7
11
11
  MINOR = 0
12
- TINY = 6
12
+ TINY = 8
13
13
  PRE = nil
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
@@ -136,7 +136,7 @@ module ActiveSupport
136
136
 
137
137
  result.tr!("_", " ")
138
138
  result.lstrip!
139
- if !keep_id_suffix && lower_case_and_underscored_word.end_with?("_id")
139
+ if !keep_id_suffix && lower_case_and_underscored_word&.end_with?("_id")
140
140
  result.delete_suffix!(" id")
141
141
  end
142
142
 
@@ -206,28 +206,9 @@ module ActiveSupport
206
206
  end
207
207
  alias_method :rfc822, :rfc2822
208
208
 
209
- NOT_SET = Object.new # :nodoc:
210
-
211
209
  # 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_fs(:db) instead."
216
- )
217
- utc.to_fs(format)
218
- elsif formatter = ::Time::DATE_FORMATS[format]
219
- ActiveSupport::Deprecation.warn(
220
- "TimeWithZone#to_s(#{format.inspect}) is deprecated. Please use TimeWithZone#to_fs(#{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_fs(#{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
210
+ def to_s
211
+ "#{time.strftime("%Y-%m-%d %H:%M:%S")} #{formatted_offset(false, 'UTC')}" # mimicking Ruby Time#to_s format
231
212
  end
232
213
 
233
214
  # Returns a string of the object's date and time.
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: 7.0.6
4
+ version: 7.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-29 00:00:00.000000000 Z
11
+ date: 2023-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -359,12 +359,12 @@ licenses:
359
359
  - MIT
360
360
  metadata:
361
361
  bug_tracker_uri: https://github.com/rails/rails/issues
362
- changelog_uri: https://github.com/rails/rails/blob/v7.0.6/activesupport/CHANGELOG.md
363
- documentation_uri: https://api.rubyonrails.org/v7.0.6/
362
+ changelog_uri: https://github.com/rails/rails/blob/v7.0.8/activesupport/CHANGELOG.md
363
+ documentation_uri: https://api.rubyonrails.org/v7.0.8/
364
364
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
365
- source_code_uri: https://github.com/rails/rails/tree/v7.0.6/activesupport
365
+ source_code_uri: https://github.com/rails/rails/tree/v7.0.8/activesupport
366
366
  rubygems_mfa_required: 'true'
367
- post_install_message:
367
+ post_install_message:
368
368
  rdoc_options:
369
369
  - "--encoding"
370
370
  - UTF-8
@@ -381,8 +381,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
381
381
  - !ruby/object:Gem::Version
382
382
  version: '0'
383
383
  requirements: []
384
- rubygems_version: 3.4.13
385
- signing_key:
384
+ rubygems_version: 3.4.18
385
+ signing_key:
386
386
  specification_version: 4
387
387
  summary: A toolkit of support libraries and Ruby core extensions extracted from the
388
388
  Rails framework.