Hash#deep_*_keys(!) recurse into nested arrays. Conflicts: activesupport/CHANGELOG.md
4.1 KiB
-
Hash#deep_transform_keys
andHash#deep_transform_keys!
now transform hashes in nested arrays. This change also applies toHash#deep_stringify_keys
,Hash#deep_stringify_keys!
,Hash#deep_symbolize_keys
andHash#deep_symbolize_keys!
.OZAWA Sakuro
-
Fixed confusing
DelegationError
inModule#delegate
.See #15186.
Vladimir Yarotsky
-
Fixed
ActiveSupport::Subscriber
so that no duplicate subscriber is created when a subscriber method is redefined.Dennis Schön
-
Remove deprecated string based terminators for
ActiveSupport::Callbacks
.Eileen M. Uchitelle
-
Fixed an issue when using
ActiveSupport::NumberHelper::NumberToDelimitedConverter
to convert a value that is anActiveSupport::SafeBuffer
introduced in2da9d67
.See #15064.
Mark J. Titorenko
-
TimeZone#parse
defaults the day of the month to '1' if any other date components are specified. This is more consistent with the behavior ofTime#parse
.Ulysse Carion
-
humanize
strips leading underscores, if any.Before:
'_id'.humanize # => ""
After:
'_id'.humanize # => "Id"
Xavier Noria
-
Fixed backward compatibility isues introduced in
326e652
.Empty Hash or Array should not present in serialization result.
{a: []}.to_query # => "" {a: {}}.to_query # => ""
For more info see #14948.
Bogdan Gusiev
-
Add
SecureRandom::uuid_v3
andSecureRandom::uuid_v5
to support stable UUID fixtures on PostgreSQL.Roderick van Domburg
-
Fixed
ActiveSupport::Duration#eql?
so that1.second.eql?(1.second)
is true.This fixes the current situation of:
1.second.eql?(1.second) #=> false
eql?
also requires that the other object is anActiveSupport::Duration
. This requirement makesActiveSupport::Duration
's behavior consistent with the behavior of Ruby's numeric types:1.eql?(1.0) #=> false 1.0.eql?(1) #=> false 1.second.eql?(1) #=> false (was true) 1.eql?(1.second) #=> false { 1 => "foo", 1.0 => "bar" } #=> { 1 => "foo", 1.0 => "bar" } { 1 => "foo", 1.second => "bar" } # now => { 1 => "foo", 1.second => "bar" } # was => { 1 => "bar" }
And though the behavior of these hasn't changed, for reference:
1 == 1.0 #=> true 1.0 == 1 #=> true 1 == 1.second #=> true 1.second == 1 #=> true
Emily Dobervich
-
ActiveSupport::SafeBuffer#prepend
acts likeString#prepend
and modifies instance in-place, returning self.ActiveSupport::SafeBuffer#prepend!
is deprecated.Pavel Pravosud
-
HashWithIndifferentAccess
better respects#to_hash
on objects it's given. In particular,.new
,#update
,#merge
,#replace
all accept objects which respond to#to_hash
, even if those objects are not Hashes directly.Peter Jaros
-
Deprecate
Class#superclass_delegating_accessor
, useClass#class_attribute
instead.Akshay Vishnoi
-
Ensure classes which
include Enumerable
get#to_json
in addition to#as_json
.Sammy Larbi
-
Change the signature of
fetch_multi
to return a hash rather than an array. This makes it consistent with the output ofread_multi
.Parker Selbert
-
Introduce
Concern#class_methods
as a sleek alternative to clunkymodule ClassMethods
. AddKernel#concern
to define at the toplevel without chunkymodule Foo; extend ActiveSupport::Concern
boilerplate.# app/models/concerns/authentication.rb concern :Authentication do included do after_create :generate_private_key end class_methods do def authenticate(credentials) # ... end end def generate_private_key # ... end end # app/models/user.rb class User < ActiveRecord::Base include Authentication end
Jeremy Kemper
Please check 4-1-stable for previous changes.