activesupport 7.0.6 → 7.0.8

Sign up to get free protection for your applications and to get access to all the features.
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.