Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package rubygem-activesupport-8.0 for
openSUSE:Factory checked in at 2025-08-22 17:49:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-activesupport-8.0 (Old)
and /work/SRC/openSUSE:Factory/.rubygem-activesupport-8.0.new.29662 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-activesupport-8.0"
Fri Aug 22 17:49:24 2025 rev:4 rq:1300935 version:8.0.2.1
Changes:
--------
---
/work/SRC/openSUSE:Factory/rubygem-activesupport-8.0/rubygem-activesupport-8.0.changes
2025-01-21 21:10:29.731028681 +0100
+++
/work/SRC/openSUSE:Factory/.rubygem-activesupport-8.0.new.29662/rubygem-activesupport-8.0.changes
2025-08-22 17:50:59.075900827 +0200
@@ -1,0 +2,6 @@
+Thu Aug 14 00:25:21 UTC 2025 - Marcus Rueckert <[email protected]>
+
+- Update to version 8.0.2.1:
+
https://rubyonrails.org/2025/8/13/Rails-Versions-8-0-2-1-7-2-2-2-and-7-1-5-2-have-been-released
+
+-------------------------------------------------------------------
Old:
----
activesupport-8.0.1.gem
New:
----
activesupport-8.0.2.1.gem
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rubygem-activesupport-8.0.spec ++++++
--- /var/tmp/diff_new_pack.gfSNWf/_old 2025-08-22 17:50:59.495918331 +0200
+++ /var/tmp/diff_new_pack.gfSNWf/_new 2025-08-22 17:50:59.499918497 +0200
@@ -1,7 +1,7 @@
#
# spec file for package rubygem-activesupport-8.0
#
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2025 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -24,7 +24,7 @@
#
Name: rubygem-activesupport-8.0
-Version: 8.0.1
+Version: 8.0.2.1
Release: 0
%define mod_name activesupport
%define mod_full_name %{mod_name}-%{version}
++++++ activesupport-8.0.1.gem -> activesupport-8.0.2.1.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/CHANGELOG.md new/CHANGELOG.md
--- old/CHANGELOG.md 2024-12-13 21:02:34.000000000 +0100
+++ new/CHANGELOG.md 1980-01-02 01:00:00.000000000 +0100
@@ -1,3 +1,106 @@
+## Rails 8.0.2.1 (August 13, 2025) ##
+
+* No changes.
+
+
+## Rails 8.0.2 (March 12, 2025) ##
+
+* No changes.
+
+
+## Rails 8.0.2 (March 12, 2025) ##
+
+* Fix setting `to_time_preserves_timezone` from
`new_framework_defaults_8_0.rb`.
+
+ *fatkodima*
+
+* Fix Active Support Cache `fetch_multi` when local store is active.
+
+ `fetch_multi` now properly yield to the provided block for missing entries
+ that have been recorded as such in the local store.
+
+ *Jean Boussier*
+
+* Fix execution wrapping to report all exceptions, including `Exception`.
+
+ If a more serious error like `SystemStackError` or `NoMemoryError` happens,
+ the error reporter should be able to report these kinds of exceptions.
+
+ *Gannon McGibbon*
+
+* Fix `RedisCacheStore` and `MemCacheStore` to also handle connection pool
related errors.
+
+ These errors are rescued and reported to `Rails.error`.
+
+ *Jean Boussier*
+
+* Fix `ActiveSupport::Cache#read_multi` to respect version expiry when using
local cache.
+
+ *zzak*
+
+* Fix `ActiveSupport::MessageVerifier` and `ActiveSupport::MessageEncryptor`
configuration of `on_rotation` callback.
+
+ ```ruby
+ verifier.rotate(old_secret).on_rotation { ... }
+ ```
+
+ Now both work as documented.
+
+ *Jean Boussier*
+
+* Fix `ActiveSupport::MessageVerifier` to always be able to verify both
URL-safe and URL-unsafe payloads.
+
+ This is to allow transitioning seemlessly from either configuration
without immediately invalidating
+ all previously generated signed messages.
+
+ *Jean Boussier*, *Florent Beaurain*, *Ali Sepehri*
+
+* Fix `cache.fetch` to honor the provided expiry when `:race_condition_ttl`
is used.
+
+ ```ruby
+ cache.fetch("key", expires_in: 1.hour, race_condition_ttl: 5.second) do
+ "something"
+ end
+ ```
+
+ In the above example, the final cache entry would have a 10 seconds TTL
instead
+ of the requested 1 hour.
+
+ *Dhia*
+
+* Better handle procs with splat arguments in `set_callback`.
+
+ *Radamés Roriz*
+
+* Fix `String#mb_chars` to not mutate the receiver.
+
+ Previously it would call `force_encoding` on the receiver,
+ now it dups the receiver first.
+
+ *Jean Boussier*
+
+* Improve `ErrorSubscriber` to also mark error causes as reported.
+
+ This avoid some cases of errors being reported twice, notably in views
because of how
+ errors are wrapped in `ActionView::Template::Error`.
+
+ *Jean Boussier*
+
+* Fix `Module#module_parent_name` to return the correct name after the
module has been named.
+
+ When called on an anonymous module, the return value wouldn't change after
the module was given a name
+ later by being assigned to a constant.
+
+ ```ruby
+ mod = Module.new
+ mod.module_parent_name # => "Object"
+ MyModule::Something = mod
+ mod.module_parent_name # => "MyModule"
+ ```
+
+ *Jean Boussier*
+
+
## Rails 8.0.1 (December 13, 2024) ##
* Fix a bug in `ERB::Util.tokenize` that causes incorrect tokenization when
ERB tags are preceeded by multibyte characters.
Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/backtrace_cleaner.rb
new/lib/active_support/backtrace_cleaner.rb
--- old/lib/active_support/backtrace_cleaner.rb 2024-12-13 21:02:34.000000000
+0100
+++ new/lib/active_support/backtrace_cleaner.rb 1980-01-02 01:00:00.000000000
+0100
@@ -79,7 +79,7 @@
#
# # Will turn "/my/rails/root/app/models/person.rb" into
"app/models/person.rb"
# root = "#{Rails.root}/"
- # backtrace_cleaner.add_filter { |line| line.start_with?(root) ?
line.from(root.size) : line }
+ # backtrace_cleaner.add_filter { |line| line.delete_prefix(root) }
def add_filter(&block)
@filters << block
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/broadcast_logger.rb
new/lib/active_support/broadcast_logger.rb
--- old/lib/active_support/broadcast_logger.rb 2024-12-13 21:02:34.000000000
+0100
+++ new/lib/active_support/broadcast_logger.rb 1980-01-02 01:00:00.000000000
+0100
@@ -163,57 +163,57 @@
dispatch { |logger| logger.close }
end
- # +True+ if the log level allows entries with severity Logger::DEBUG to be
written
- # to at least one broadcast. +False+ otherwise.
+ # True if the log level allows entries with severity +Logger::DEBUG+ to be
written
+ # to at least one broadcast. False otherwise.
def debug?
@broadcasts.any? { |logger| logger.debug? }
end
- # Sets the log level to Logger::DEBUG for the whole broadcast.
+ # Sets the log level to +Logger::DEBUG+ for the whole broadcast.
def debug!
dispatch { |logger| logger.debug! }
end
- # +True+ if the log level allows entries with severity Logger::INFO to be
written
- # to at least one broadcast. +False+ otherwise.
+ # True if the log level allows entries with severity +Logger::INFO+ to be
written
+ # to at least one broadcast. False otherwise.
def info?
@broadcasts.any? { |logger| logger.info? }
end
- # Sets the log level to Logger::INFO for the whole broadcast.
+ # Sets the log level to +Logger::INFO+ for the whole broadcast.
def info!
dispatch { |logger| logger.info! }
end
- # +True+ if the log level allows entries with severity Logger::WARN to be
written
- # to at least one broadcast. +False+ otherwise.
+ # True if the log level allows entries with severity +Logger::WARN+ to be
written
+ # to at least one broadcast. False otherwise.
def warn?
@broadcasts.any? { |logger| logger.warn? }
end
- # Sets the log level to Logger::WARN for the whole broadcast.
+ # Sets the log level to +Logger::WARN+ for the whole broadcast.
def warn!
dispatch { |logger| logger.warn! }
end
- # +True+ if the log level allows entries with severity Logger::ERROR to be
written
- # to at least one broadcast. +False+ otherwise.
+ # True if the log level allows entries with severity +Logger::ERROR+ to be
written
+ # to at least one broadcast. False otherwise.
def error?
@broadcasts.any? { |logger| logger.error? }
end
- # Sets the log level to Logger::ERROR for the whole broadcast.
+ # Sets the log level to +Logger::ERROR+ for the whole broadcast.
def error!
dispatch { |logger| logger.error! }
end
- # +True+ if the log level allows entries with severity Logger::FATAL to be
written
- # to at least one broadcast. +False+ otherwise.
+ # True if the log level allows entries with severity +Logger::FATAL+ to be
written
+ # to at least one broadcast. False otherwise.
def fatal?
@broadcasts.any? { |logger| logger.fatal? }
end
- # Sets the log level to Logger::FATAL for the whole broadcast.
+ # Sets the log level to +Logger::FATAL+ for the whole broadcast.
def fatal!
dispatch { |logger| logger.fatal! }
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/cache/file_store.rb
new/lib/active_support/cache/file_store.rb
--- old/lib/active_support/cache/file_store.rb 2024-12-13 21:02:34.000000000
+0100
+++ new/lib/active_support/cache/file_store.rb 1980-01-02 01:00:00.000000000
+0100
@@ -57,7 +57,7 @@
# cache.write("baz", 5)
# cache.increment("baz") # => 6
#
- def increment(name, amount = 1, options = nil)
+ def increment(name, amount = 1, **options)
options = merged_options(options)
key = normalize_key(name, options)
@@ -77,7 +77,7 @@
# cache.write("baz", 5)
# cache.decrement("baz") # => 4
#
- def decrement(name, amount = 1, options = nil)
+ def decrement(name, amount = 1, **options)
options = merged_options(options)
key = normalize_key(name, options)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/cache/mem_cache_store.rb
new/lib/active_support/cache/mem_cache_store.rb
--- old/lib/active_support/cache/mem_cache_store.rb 2024-12-13
21:02:34.000000000 +0100
+++ new/lib/active_support/cache/mem_cache_store.rb 1980-01-02
01:00:00.000000000 +0100
@@ -276,7 +276,7 @@
def rescue_error_with(fallback)
yield
- rescue Dalli::DalliError => error
+ rescue Dalli::DalliError, ConnectionPool::Error,
ConnectionPool::TimeoutError => error
logger.error("DalliError (#{error}): #{error.message}") if logger
ActiveSupport.error_reporter&.report(
error,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/cache/memory_store.rb
new/lib/active_support/cache/memory_store.rb
--- old/lib/active_support/cache/memory_store.rb 2024-12-13
21:02:34.000000000 +0100
+++ new/lib/active_support/cache/memory_store.rb 1980-01-02
01:00:00.000000000 +0100
@@ -146,9 +146,9 @@
# cache.write("baz", 5)
# cache.increment("baz") # => 6
#
- def increment(name, amount = 1, options = nil)
+ def increment(name, amount = 1, **options)
instrument(:increment, name, amount: amount) do
- modify_value(name, amount, options)
+ modify_value(name, amount, **options)
end
end
@@ -163,9 +163,9 @@
# cache.write("baz", 5)
# cache.decrement("baz") # => 4
#
- def decrement(name, amount = 1, options = nil)
+ def decrement(name, amount = 1, **options)
instrument(:decrement, name, amount: amount) do
- modify_value(name, -amount, options)
+ modify_value(name, -amount, **options)
end
end
@@ -238,7 +238,7 @@
# Modifies the amount of an integer value that is stored in the cache.
# If the key is not found it is created and set to +amount+.
- def modify_value(name, amount, options)
+ def modify_value(name, amount, **options)
options = merged_options(options)
key = normalize_key(name, options)
version = normalize_version(name, options)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/cache/null_store.rb
new/lib/active_support/cache/null_store.rb
--- old/lib/active_support/cache/null_store.rb 2024-12-13 21:02:34.000000000
+0100
+++ new/lib/active_support/cache/null_store.rb 1980-01-02 01:00:00.000000000
+0100
@@ -25,10 +25,10 @@
def cleanup(options = nil)
end
- def increment(name, amount = 1, options = nil)
+ def increment(name, amount = 1, **options)
end
- def decrement(name, amount = 1, options = nil)
+ def decrement(name, amount = 1, **options)
end
def delete_matched(matcher, options = nil)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/cache/redis_cache_store.rb
new/lib/active_support/cache/redis_cache_store.rb
--- old/lib/active_support/cache/redis_cache_store.rb 2024-12-13
21:02:34.000000000 +0100
+++ new/lib/active_support/cache/redis_cache_store.rb 1980-01-02
01:00:00.000000000 +0100
@@ -483,7 +483,7 @@
def failsafe(method, returning: nil)
yield
- rescue ::Redis::BaseError => error
+ rescue ::Redis::BaseError, ConnectionPool::Error,
ConnectionPool::TimeoutError => error
@error_handler&.call(method: method, exception: error, returning:
returning)
returning
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/cache/strategy/local_cache.rb
new/lib/active_support/cache/strategy/local_cache.rb
--- old/lib/active_support/cache/strategy/local_cache.rb 2024-12-13
21:02:34.000000000 +0100
+++ new/lib/active_support/cache/strategy/local_cache.rb 1980-01-02
01:00:00.000000000 +0100
@@ -94,28 +94,54 @@
super
end
- def increment(name, amount = 1, options = nil) # :nodoc:
+ def increment(name, amount = 1, **options) # :nodoc:
return super unless local_cache
value = bypass_local_cache { super }
- if options
- write_cache_value(name, value, raw: true, **options)
- else
- write_cache_value(name, value, raw: true)
- end
+ write_cache_value(name, value, raw: true, **options)
value
end
- def decrement(name, amount = 1, options = nil) # :nodoc:
+ def decrement(name, amount = 1, **options) # :nodoc:
return super unless local_cache
value = bypass_local_cache { super }
- if options
- write_cache_value(name, value, raw: true, **options)
- else
- write_cache_value(name, value, raw: true)
- end
+ write_cache_value(name, value, raw: true, **options)
value
end
+ def fetch_multi(*names, &block) # :nodoc:
+ return super if local_cache.nil? || names.empty?
+
+ options = names.extract_options!
+ options = merged_options(options)
+
+ keys_to_names = names.index_by { |name| normalize_key(name, options)
}
+
+ local_entries = local_cache.read_multi_entries(keys_to_names.keys)
+ results = local_entries.each_with_object({}) do |(key, value),
result|
+ # If we recorded a miss in the local cache, `#fetch_multi` will
forward
+ # that key to the real store, and the entry will be replaced
+ # local_cache.delete_entry(key)
+ next if value.nil?
+
+ entry = deserialize_entry(value, **options)
+
+ normalized_key = keys_to_names[key]
+ if entry.nil?
+ result[normalized_key] = nil
+ elsif entry.expired? ||
entry.mismatched?(normalize_version(normalized_key, options))
+ local_cache.delete_entry(key)
+ else
+ result[normalized_key] = entry.value
+ end
+ end
+
+ if results.size < names.size
+ results.merge!(super(*(names - results.keys), options, &block))
+ end
+
+ results
+ end
+
private
def read_serialized_entry(key, raw: false, **options)
if cache = local_cache
@@ -137,17 +163,27 @@
keys_to_names = names.index_by { |name| normalize_key(name,
options) }
local_entries = local_cache.read_multi_entries(keys_to_names.keys)
- local_entries.transform_keys! { |key| keys_to_names[key] }
- local_entries.transform_values! do |payload|
- deserialize_entry(payload, **options)&.value
+
+ results = local_entries.each_with_object({}) do |(key, value),
result|
+ next if value.nil? # recorded cache miss
+
+ entry = deserialize_entry(value, **options)
+
+ normalized_key = keys_to_names[key]
+ if entry.nil?
+ result[normalized_key] = nil
+ elsif entry.expired? ||
entry.mismatched?(normalize_version(normalized_key, options))
+ local_cache.delete_entry(key)
+ else
+ result[normalized_key] = entry.value
+ end
end
- missed_names = names - local_entries.keys
- if missed_names.any?
- local_entries.merge!(super(missed_names, **options))
- else
- local_entries
+ if results.size < names.size
+ results.merge!(super(names - results.keys, **options))
end
+
+ results
end
def write_serialized_entry(key, payload, **)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/cache.rb
new/lib/active_support/cache.rb
--- old/lib/active_support/cache.rb 2024-12-13 21:02:34.000000000 +0100
+++ new/lib/active_support/cache.rb 1980-01-02 01:00:00.000000000 +0100
@@ -386,7 +386,7 @@
# process can try to generate a new value after the extended time
window
# has elapsed.
#
- # # Set all values to expire after one minute.
+ # # Set all values to expire after one second.
# cache = ActiveSupport::Cache::MemoryStore.new(expires_in: 1)
#
# cache.write("foo", "original value")
@@ -1035,8 +1035,7 @@
# When an entry has a positive :race_condition_ttl defined, put
the stale entry back into the cache
# for a brief period while the entry is being recalculated.
entry.expires_at = Time.now.to_f + race_ttl
- options[:expires_in] = race_ttl * 2
- write_entry(key, entry, **options)
+ write_entry(key, entry, **options, expires_in: race_ttl * 2)
else
delete_entry(key, **options)
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/callbacks.rb
new/lib/active_support/callbacks.rb
--- old/lib/active_support/callbacks.rb 2024-12-13 21:02:34.000000000 +0100
+++ new/lib/active_support/callbacks.rb 1980-01-02 01:00:00.000000000 +0100
@@ -498,9 +498,10 @@
when Conditionals::Value
ProcCall.new(filter)
when ::Proc
- if filter.arity > 1
+ case filter.arity
+ when 2
InstanceExec2.new(filter)
- elsif filter.arity > 0
+ when 1, -2
InstanceExec1.new(filter)
else
InstanceExec0.new(filter)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/core_ext/enumerable.rb
new/lib/active_support/core_ext/enumerable.rb
--- old/lib/active_support/core_ext/enumerable.rb 2024-12-13
21:02:34.000000000 +0100
+++ new/lib/active_support/core_ext/enumerable.rb 1980-01-02
01:00:00.000000000 +0100
@@ -203,7 +203,7 @@
end
# Returns the sole item in the enumerable. If there are no items, or more
- # than one item, raises +Enumerable::SoleItemExpectedError+.
+ # than one item, raises Enumerable::SoleItemExpectedError.
#
# ["x"].sole # => "x"
# Set.new.sole # => Enumerable::SoleItemExpectedError: no item found
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/core_ext/hash/deep_merge.rb
new/lib/active_support/core_ext/hash/deep_merge.rb
--- old/lib/active_support/core_ext/hash/deep_merge.rb 2024-12-13
21:02:34.000000000 +0100
+++ new/lib/active_support/core_ext/hash/deep_merge.rb 1980-01-02
01:00:00.000000000 +0100
@@ -36,6 +36,7 @@
#--
# Implemented by ActiveSupport::DeepMergeable#deep_merge!.
+ ##
def deep_merge?(other) # :nodoc:
other.is_a?(Hash)
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/core_ext/module/introspection.rb
new/lib/active_support/core_ext/module/introspection.rb
--- old/lib/active_support/core_ext/module/introspection.rb 2024-12-13
21:02:34.000000000 +0100
+++ new/lib/active_support/core_ext/module/introspection.rb 1980-01-02
01:00:00.000000000 +0100
@@ -10,6 +10,9 @@
if defined?(@parent_name)
@parent_name
else
+ name = self.name
+ return if name.nil?
+
parent_name = name =~ /::[^:]+\z/ ? -$` : nil
@parent_name = parent_name unless frozen?
parent_name
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/current_attributes.rb
new/lib/active_support/current_attributes.rb
--- old/lib/active_support/current_attributes.rb 2024-12-13
21:02:34.000000000 +0100
+++ new/lib/active_support/current_attributes.rb 1980-01-02
01:00:00.000000000 +0100
@@ -187,7 +187,7 @@
super
return if name == :initialize
return unless public_method_defined?(name)
- return if respond_to?(name, true)
+ return if singleton_class.method_defined?(name) ||
singleton_class.private_method_defined?(name)
Delegation.generate(singleton_class, [name], to: :instance, as:
self, nilable: false)
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/error_reporter.rb
new/lib/active_support/error_reporter.rb
--- old/lib/active_support/error_reporter.rb 2024-12-13 21:02:34.000000000
+0100
+++ new/lib/active_support/error_reporter.rb 1980-01-02 01:00:00.000000000
+0100
@@ -207,6 +207,12 @@
#
# Rails.error.report(error)
#
+ # The +error+ argument must be an instance of Exception.
+ #
+ # Rails.error.report(Exception.new("Something went wrong"))
+ #
+ # Otherwise you can use #unexpected to report an error which does accept a
+ # string argument.
def report(error, handled: true, severity: handled ? :warning : :error,
context: {}, source: DEFAULT_SOURCE)
return if error.instance_variable_defined?(:@__rails_error_reported)
ensure_backtrace(error)
@@ -232,8 +238,11 @@
end
end
- unless error.frozen?
- error.instance_variable_set(:@__rails_error_reported, true)
+ while error
+ unless error.frozen?
+ error.instance_variable_set(:@__rails_error_reported, true)
+ end
+ error = error.cause
end
nil
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/execution_wrapper.rb
new/lib/active_support/execution_wrapper.rb
--- old/lib/active_support/execution_wrapper.rb 2024-12-13 21:02:34.000000000
+0100
+++ new/lib/active_support/execution_wrapper.rb 1980-01-02 01:00:00.000000000
+0100
@@ -89,7 +89,7 @@
instance = run!
begin
yield
- rescue => error
+ rescue Exception => error
error_reporter&.report(error, handled: false, source: source)
raise
ensure
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/gem_version.rb
new/lib/active_support/gem_version.rb
--- old/lib/active_support/gem_version.rb 2024-12-13 21:02:34.000000000
+0100
+++ new/lib/active_support/gem_version.rb 1980-01-02 01:00:00.000000000
+0100
@@ -9,8 +9,8 @@
module VERSION
MAJOR = 8
MINOR = 0
- TINY = 1
- PRE = nil
+ TINY = 2
+ PRE = "1"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/json/encoding.rb
new/lib/active_support/json/encoding.rb
--- old/lib/active_support/json/encoding.rb 2024-12-13 21:02:34.000000000
+0100
+++ new/lib/active_support/json/encoding.rb 1980-01-02 01:00:00.000000000
+0100
@@ -13,12 +13,30 @@
end
module JSON
- # Dumps objects in JSON (JavaScript Object Notation).
- # See http://www.json.org for more info.
- #
- # ActiveSupport::JSON.encode({ team: 'rails', players: '36' })
- # # => "{\"team\":\"rails\",\"players\":\"36\"}"
class << self
+ # Dumps objects in JSON (JavaScript Object Notation).
+ # See http://www.json.org for more info.
+ #
+ # ActiveSupport::JSON.encode({ team: 'rails', players: '36' })
+ # # => "{\"team\":\"rails\",\"players\":\"36\"}"
+ #
+ # Generates JSON that is safe to include in JavaScript as it escapes
+ # U+2028 (Line Separator) and U+2029 (Paragraph Separator):
+ #
+ # ActiveSupport::JSON.encode({ key: "\u2028" })
+ # # => "{\"key\":\"\\u2028\"}"
+ #
+ # By default, it also generates JSON that is safe to include in HTML, as
+ # it escapes <tt><</tt>, <tt>></tt>, and <tt>&</tt>:
+ #
+ # ActiveSupport::JSON.encode({ key: "<>&" })
+ # # => "{\"key\":\"\\u003c\\u003e\\u0026\"}"
+ #
+ # This can be changed with the +escape_html_entities+ option, or the
+ # global escape_html_entities_in_json configuration option.
+ #
+ # ActiveSupport::JSON.encode({ key: "<>&" }, escape_html_entities:
false)
+ # # => "{\"key\":\"<>&\"}"
def encode(value, options = nil)
Encoding.json_encoder.new(options).encode(value)
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/message_encryptors.rb
new/lib/active_support/message_encryptors.rb
--- old/lib/active_support/message_encryptors.rb 2024-12-13
21:02:34.000000000 +0100
+++ new/lib/active_support/message_encryptors.rb 1980-01-02
01:00:00.000000000 +0100
@@ -28,8 +28,8 @@
# <tt>transitional = false</tt>.
##
- # :method: initialize
- # :call-seq: initialize(&secret_generator)
+ # :singleton-method: new
+ # :call-seq: new(&secret_generator)
#
# Initializes a new instance. +secret_generator+ must accept a salt and a
# +secret_length+ kwarg, and return a suitable secret (string) or secrets
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/message_verifier.rb
new/lib/active_support/message_verifier.rb
--- old/lib/active_support/message_verifier.rb 2024-12-13 21:02:34.000000000
+0100
+++ new/lib/active_support/message_verifier.rb 1980-01-02 01:00:00.000000000
+0100
@@ -154,6 +154,8 @@
# not URL-safe. In other words, they can contain "+" and "/". If you
want to
# generate URL-safe strings (in compliance with "Base 64 Encoding with
URL
# and Filename Safe Alphabet" in RFC 4648), you can pass +true+.
+ # Note that MessageVerifier will always accept both URL-safe and
URL-unsafe
+ # encoded messages, to allow a smooth transition between the two
settings.
#
# [+:force_legacy_metadata_serializer+]
# Whether to use the legacy metadata serializer, which serializes the
@@ -318,6 +320,13 @@
end
private
+ def decode(encoded, url_safe: @url_safe)
+ catch :invalid_message_format do
+ return super
+ end
+ super(encoded, url_safe: !url_safe)
+ end
+
def sign_encoded(encoded)
digest = generate_digest(encoded)
encoded << SEPARATOR << digest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/message_verifiers.rb
new/lib/active_support/message_verifiers.rb
--- old/lib/active_support/message_verifiers.rb 2024-12-13 21:02:34.000000000
+0100
+++ new/lib/active_support/message_verifiers.rb 1980-01-02 01:00:00.000000000
+0100
@@ -28,8 +28,8 @@
# <tt>transitional = false</tt>.
##
- # :method: initialize
- # :call-seq: initialize(&secret_generator)
+ # :singleton-method: new
+ # :call-seq: new(&secret_generator)
#
# Initializes a new instance. +secret_generator+ must accept a salt, and
# return a suitable secret (string). +secret_generator+ may also accept
@@ -59,7 +59,9 @@
##
# :method: rotate
- # :call-seq: rotate(**options)
+ # :call-seq:
+ # rotate(**options)
+ # rotate(&block)
#
# Adds +options+ to the list of option sets. Messages will be signed using
# the first set in the list. When verifying, however, each set will be
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/messages/rotator.rb
new/lib/active_support/messages/rotator.rb
--- old/lib/active_support/messages/rotator.rb 2024-12-13 21:02:34.000000000
+0100
+++ new/lib/active_support/messages/rotator.rb 1980-01-02 01:00:00.000000000
+0100
@@ -15,6 +15,11 @@
fall_back_to build_rotation(*args, **options)
end
+ def on_rotation(&on_rotation)
+ @on_rotation = on_rotation
+ self
+ end
+
def fall_back_to(fallback)
@rotations << fallback
self
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/multibyte/chars.rb
new/lib/active_support/multibyte/chars.rb
--- old/lib/active_support/multibyte/chars.rb 2024-12-13 21:02:34.000000000
+0100
+++ new/lib/active_support/multibyte/chars.rb 1980-01-02 01:00:00.000000000
+0100
@@ -55,7 +55,10 @@
# Creates a new Chars instance by wrapping _string_.
def initialize(string)
@wrapped_string = string
- @wrapped_string.force_encoding(Encoding::UTF_8) unless
@wrapped_string.frozen?
+ if string.encoding != Encoding::UTF_8
+ @wrapped_string = @wrapped_string.dup
+ @wrapped_string.force_encoding(Encoding::UTF_8)
+ end
end
# Forward all undefined methods to the wrapped string.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/railtie.rb
new/lib/active_support/railtie.rb
--- old/lib/active_support/railtie.rb 2024-12-13 21:02:34.000000000 +0100
+++ new/lib/active_support/railtie.rb 1980-01-02 01:00:00.000000000 +0100
@@ -97,7 +97,9 @@
end
initializer "active_support.to_time_preserves_timezone" do |app|
- ActiveSupport.to_time_preserves_timezone =
app.config.active_support.to_time_preserves_timezone
+ config.after_initialize do
+ ActiveSupport.to_time_preserves_timezone =
app.config.active_support.to_time_preserves_timezone
+ end
end
# Sets the default week start
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/active_support/testing/strict_warnings.rb
new/lib/active_support/testing/strict_warnings.rb
--- old/lib/active_support/testing/strict_warnings.rb 2024-12-13
21:02:34.000000000 +0100
+++ new/lib/active_support/testing/strict_warnings.rb 1970-01-01
01:00:00.000000000 +0100
@@ -1,43 +0,0 @@
-# frozen_string_literal: true
-
-$VERBOSE = true
-Warning[:deprecated] = true
-
-module ActiveSupport
- module RaiseWarnings # :nodoc:
- class WarningError < StandardError; end
-
- PROJECT_ROOT = File.expand_path("../../../../", __dir__)
- ALLOWED_WARNINGS = Regexp.union(
- /circular require considered harmful.*delayed_job/, # Bug in delayed job.
-
- # Expected non-verbose warning emitted by Rails.
- /Ignoring .*\.yml because it has expired/,
- /Failed to validate the schema cache because/,
-
- # TODO: We need to decide what to do with this.
- /Status code :unprocessable_entity is deprecated/,
- )
-
- SUPPRESSED_WARNINGS = Regexp.union(
- # TODO: remove if https://github.com/mikel/mail/pull/1557 or similar fix
- %r{/lib/mail/parsers/.*statement not reached},
- %r{/lib/mail/parsers/.*assigned but unused variable - disp_type_s},
- %r{/lib/mail/parsers/.*assigned but unused variable - testEof}
- )
-
- def warn(message, ...)
- return if SUPPRESSED_WARNINGS.match?(message)
-
- super
-
- return unless message.include?(PROJECT_ROOT)
- return if ALLOWED_WARNINGS.match?(message)
- return unless ENV["RAILS_STRICT_WARNINGS"] || ENV["BUILDKITE"]
-
- raise WarningError.new(message)
- end
- end
-end
-
-Warning.singleton_class.prepend(ActiveSupport::RaiseWarnings)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata 2024-12-13 21:02:34.000000000 +0100
+++ new/metadata 1980-01-02 01:00:00.000000000 +0100
@@ -1,14 +1,13 @@
--- !ruby/object:Gem::Specification
name: activesupport
version: !ruby/object:Gem::Version
- version: 8.0.1
+ version: 8.0.2.1
platform: ruby
authors:
- David Heinemeier Hansson
-autorequire:
bindir: bin
cert_chain: []
-date: 2024-12-13 00:00:00.000000000 Z
+date: 1980-01-02 00:00:00.000000000 Z
dependencies:
- !ruby/object:Gem::Dependency
name: i18n
@@ -475,7 +474,6 @@
- lib/active_support/testing/parallelize_executor.rb
- lib/active_support/testing/setup_and_teardown.rb
- lib/active_support/testing/stream.rb
-- lib/active_support/testing/strict_warnings.rb
- lib/active_support/testing/tagged_logging.rb
- lib/active_support/testing/tests_without_assertions.rb
- lib/active_support/testing/time_helpers.rb
@@ -495,12 +493,11 @@
- MIT
metadata:
bug_tracker_uri: https://github.com/rails/rails/issues
- changelog_uri:
https://github.com/rails/rails/blob/v8.0.1/activesupport/CHANGELOG.md
- documentation_uri: https://api.rubyonrails.org/v8.0.1/
+ changelog_uri:
https://github.com/rails/rails/blob/v8.0.2.1/activesupport/CHANGELOG.md
+ documentation_uri: https://api.rubyonrails.org/v8.0.2.1/
mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
- source_code_uri: https://github.com/rails/rails/tree/v8.0.1/activesupport
+ source_code_uri: https://github.com/rails/rails/tree/v8.0.2.1/activesupport
rubygems_mfa_required: 'true'
-post_install_message:
rdoc_options:
- "--encoding"
- UTF-8
@@ -517,8 +514,7 @@
- !ruby/object:Gem::Version
version: '0'
requirements: []
-rubygems_version: 3.5.22
-signing_key:
+rubygems_version: 3.6.9
specification_version: 4
summary: A toolkit of support libraries and Ruby core extensions extracted
from the
Rails framework.