mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
decd719711
Hash#deep_*_keys(!) recurse into nested arrays. Conflicts: activesupport/CHANGELOG.md
155 lines
4.1 KiB
Markdown
155 lines
4.1 KiB
Markdown
* `Hash#deep_transform_keys` and `Hash#deep_transform_keys!` now transform hashes
|
|
in nested arrays. This change also applies to `Hash#deep_stringify_keys`,
|
|
`Hash#deep_stringify_keys!`, `Hash#deep_symbolize_keys` and
|
|
`Hash#deep_symbolize_keys!`.
|
|
|
|
*OZAWA Sakuro*
|
|
|
|
* Fixed confusing `DelegationError` in `Module#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 an `ActiveSupport::SafeBuffer` introduced
|
|
in 2da9d67.
|
|
|
|
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 of
|
|
`Time#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` and `SecureRandom::uuid_v5` to support stable
|
|
UUID fixtures on PostgreSQL.
|
|
|
|
*Roderick van Domburg*
|
|
|
|
* Fixed `ActiveSupport::Duration#eql?` so that `1.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 an `ActiveSupport::Duration`.
|
|
This requirement makes `ActiveSupport::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 like `String#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`, use `Class#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 of `read_multi`.
|
|
|
|
*Parker Selbert*
|
|
|
|
* Introduce `Concern#class_methods` as a sleek alternative to clunky
|
|
`module ClassMethods`. Add `Kernel#concern` to define at the toplevel
|
|
without chunky `module 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](https://github.com/rails/rails/blob/4-1-stable/activesupport/CHANGELOG.md) for previous changes.
|