aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/CHANGELOG.md
diff options
context:
space:
mode:
Diffstat (limited to 'activesupport/CHANGELOG.md')
-rw-r--r--activesupport/CHANGELOG.md269
1 files changed, 125 insertions, 144 deletions
diff --git a/activesupport/CHANGELOG.md b/activesupport/CHANGELOG.md
index 5962dd255c..44735e4b75 100644
--- a/activesupport/CHANGELOG.md
+++ b/activesupport/CHANGELOG.md
@@ -1,218 +1,199 @@
-* Fixed `ActiveSupport::Cache::FileStore` exploding with long paths.
- *Adam Panzer / Michael Grosser*
-
-* Fixed `ActiveSupport::TimeWithZone#-` so precision is not unnecessarily lost
- when working with objects with a nanosecond component.
-
- `ActiveSupport::TimeWithZone#-` should return the same result as if we were
- using `Time#-`:
-
- Time.now.end_of_day - Time.now.beginning_of_day #=> 86399.999999999
+* Fixed a roundtrip problem with AS::SafeBuffer where primitive-like strings
+ will be dumped as primitives:
Before:
- Time.zone.now.end_of_day.nsec #=> 999999999
- Time.zone.now.end_of_day - Time.zone.now.beginning_of_day #=> 86400.0
-
- After:
-
- Time.zone.now.end_of_day - Time.zone.now.beginning_of_day
- #=> 86399.999999999
-
- *Gordon Chan*
-
-* Fixed precision error in NumberHelper when using Rationals.
-
- before:
- ActiveSupport::NumberHelper.number_to_rounded Rational(1000, 3), precision: 2
- #=> "330.00"
- after:
- ActiveSupport::NumberHelper.number_to_rounded Rational(1000, 3), precision: 2
- #=> "333.33"
-
- See #15379.
-
- *Juanjo Bazán*
+ YAML.load ActiveSupport::SafeBuffer.new("Hello").to_yaml # => "Hello"
+ YAML.load ActiveSupport::SafeBuffer.new("true").to_yaml # => true
+ YAML.load ActiveSupport::SafeBuffer.new("false").to_yaml # => false
+ YAML.load ActiveSupport::SafeBuffer.new("1").to_yaml # => 1
+ YAML.load ActiveSupport::SafeBuffer.new("1.1").to_yaml # => 1.1
-* Removed deprecated `Numeric#ago` and friends
+ After:
- Replacements:
-
- 5.ago => 5.seconds.ago
- 5.until => 5.seconds.until
- 5.since => 5.seconds.since
- 5.from_now => 5.seconds.from_now
-
- See #12389 for the history and rationale behind this.
+ YAML.load ActiveSupport::SafeBuffer.new("Hello").to_yaml # => "Hello"
+ YAML.load ActiveSupport::SafeBuffer.new("true").to_yaml # => "true"
+ YAML.load ActiveSupport::SafeBuffer.new("false").to_yaml # => "false"
+ YAML.load ActiveSupport::SafeBuffer.new("1").to_yaml # => "1"
+ YAML.load ActiveSupport::SafeBuffer.new("1.1").to_yaml # => "1.1"
*Godfrey Chan*
-* DateTime `advance` now supports partial days.
+* Enable number_to_percentage to keep the number's precision by allowing :precision to be nil
- Before:
+ *Jack Xu*
- DateTime.now.advance(days: 1, hours: 12)
+* config_accessor became a private method, as with Ruby's attr_accessor.
- After:
+ *Akira Matsuda*
- DateTime.now.advance(days: 1.5)
+* `AS::Testing::TimeHelpers#travel_to` now changes `DateTime.now` as well as
+ `Time.now` and `Date.today`.
- Fixes #12005.
+ *Yuki Nishijima*
- *Shay Davidson*
+* Add `file_fixture` to `ActiveSupport::TestCase`.
+ It provides a simple mechanism to access sample files in your test cases.
-* `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!`.
+ By default file fixtures are stored in `test/fixtures/files`. This can be
+ configured per test-case using the `file_fixture_path` class attribute.
- *OZAWA Sakuro*
+ *Yves Senn*
-* Fixed confusing `DelegationError` in `Module#delegate`.
+* Return value of yielded block in `File.atomic_write`.
- See #15186.
+ *Ian Ker-Seymer*
- *Vladimir Yarotsky*
+* Duplicate frozen array when assigning it to a HashWithIndifferentAccess so
+ that it doesn't raise a `RuntimeError` when calling `map!` on it in `convert_value`.
-* Fixed `ActiveSupport::Subscriber` so that no duplicate subscriber is created
- when a subscriber method is redefined.
+ Fixes #18550.
- *Dennis Schön*
+ *Aditya Kapoor*
-* Remove deprecated string based terminators for `ActiveSupport::Callbacks`.
+* Add missing time zone definitions for Russian Federation and sync them
+ with `zone.tab` file from tzdata version 2014j (latest).
- *Eileen M. Uchitelle*
+ *Andrey Novikov*
-* Fixed an issue when using
- `ActiveSupport::NumberHelper::NumberToDelimitedConverter` to
- convert a value that is an `ActiveSupport::SafeBuffer` introduced
- in 2da9d67.
+* Add `SecureRandom.base58` for generation of random base58 strings.
- See #15064.
+ *Matthew Draper*, *Guillermo Iguaran*
- *Mark J. Titorenko*
+* Add `#prev_day` and `#next_day` counterparts to `#yesterday` and
+ `#tomorrow` for `Date`, `Time`, and `DateTime`.
-* `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`.
+ *George Claghorn*
- *Ulysse Carion*
+* Add `same_time` option to `#next_week` and `#prev_week` for `Date`, `Time`,
+ and `DateTime`.
-* `humanize` strips leading underscores, if any.
+ *George Claghorn*
- Before:
+* Add `#on_weekend?`, `#next_weekday`, `#prev_weekday` methods to `Date`,
+ `Time`, and `DateTime`.
- '_id'.humanize # => ""
+ `#on_weekend?` returns true if the receiving date/time falls on a Saturday
+ or Sunday.
- After:
+ `#next_weekday` returns a new date/time representing the next day that does
+ not fall on a Saturday or Sunday.
- '_id'.humanize # => "Id"
+ `#prev_weekday` returns a new date/time representing the previous day that
+ does not fall on a Saturday or Sunday.
- *Xavier Noria*
+ *George Claghorn*
-* Fixed backward compatibility isues introduced in 326e652.
+* Change the default test order from `:sorted` to `:random`.
- Empty Hash or Array should not present in serialization result.
+ *Rafael Mendonça França*
- {a: []}.to_query # => ""
- {a: {}}.to_query # => ""
+* Remove deprecated `ActiveSupport::JSON::Encoding::CircularReferenceError`.
- For more info see #14948.
+ *Rafael Mendonça França*
- *Bogdan Gusiev*
+* Remove deprecated methods `ActiveSupport::JSON::Encoding.encode_big_decimal_as_string=`
+ and `ActiveSupport::JSON::Encoding.encode_big_decimal_as_string`.
-* Add `SecureRandom::uuid_v3` and `SecureRandom::uuid_v5` to support stable
- UUID fixtures on PostgreSQL.
+ *Rafael Mendonça França*
- *Roderick van Domburg*
+* Remove deprecated `ActiveSupport::SafeBuffer#prepend`.
-* Fixed `ActiveSupport::Duration#eql?` so that `1.second.eql?(1.second)` is
- true.
+ *Rafael Mendonça França*
- This fixes the current situation of:
+* Remove deprecated methods at `Kernel`.
- 1.second.eql?(1.second) #=> false
+ `silence_stderr`, `silence_stream`, `capture` and `quietly`.
- `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:
+ *Rafael Mendonça França*
- 1.eql?(1.0) #=> false
- 1.0.eql?(1) #=> false
+* Remove deprecated `active_support/core_ext/big_decimal/yaml_conversions`
+ file.
- 1.second.eql?(1) #=> false (was true)
- 1.eql?(1.second) #=> false
+ *Rafael Mendonça França*
- { 1 => "foo", 1.0 => "bar" }
- #=> { 1 => "foo", 1.0 => "bar" }
+* Remove deprecated methods `ActiveSupport::Cache::Store.instrument` and
+ `ActiveSupport::Cache::Store.instrument=`.
- { 1 => "foo", 1.second => "bar" }
- # now => { 1 => "foo", 1.second => "bar" }
- # was => { 1 => "bar" }
+ *Rafael Mendonça França*
- And though the behavior of these hasn't changed, for reference:
+* Change the way in which callback chains can be halted.
- 1 == 1.0 #=> true
- 1.0 == 1 #=> true
+ The preferred method to halt a callback chain from now on is to explicitly
+ `throw(:abort)`.
+ In the past, returning `false` in an ActiveSupport callback had the side
+ effect of halting the callback chain. This is not recommended anymore and,
+ depending on the value of
+ `Callbacks::CallbackChain.halt_and_display_warning_on_return_false`, will
+ either not work at all or display a deprecation warning.
- 1 == 1.second #=> true
- 1.second == 1 #=> true
+* Add Callbacks::CallbackChain.halt_and_display_warning_on_return_false
- *Emily Dobervich*
+ Setting `Callbacks::CallbackChain.halt_and_display_warning_on_return_false`
+ to true will let an app support the deprecated way of halting callback
+ chains by returning `false`.
-* `ActiveSupport::SafeBuffer#prepend` acts like `String#prepend` and modifies
- instance in-place, returning self. `ActiveSupport::SafeBuffer#prepend!` is
- deprecated.
+ Setting the value to false will tell the app to ignore any `false` value
+ returned by callbacks, and only halt the chain upon `throw(:abort)`.
- *Pavel Pravosud*
+ The value can also be set with the Rails configuration option
+ `config.active_support.halt_callback_chains_on_return_false`.
-* `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.
+ When the configuration option is missing, its value is `true`, so older apps
+ ported to Rails 5.0 will not break (but display a deprecation warning).
+ For new Rails 5.0 apps, its value is set to `false` in an initializer, so
+ these apps will support the new behavior by default.
- *Peter Jaros*
+ *claudiob*
-* Deprecate `Class#superclass_delegating_accessor`, use `Class#class_attribute` instead.
+* Changes arguments and default value of CallbackChain's :terminator option
- *Akshay Vishnoi*
+ Chains of callbacks defined without an explicit `:terminator` option will
+ now be halted as soon as a `before_` callback throws `:abort`.
-* Ensure classes which `include Enumerable` get `#to_json` in addition to
- `#as_json`.
+ Chains of callbacks defined with a `:terminator` option will maintain their
+ existing behavior of halting as soon as a `before_` callback matches the
+ terminator's expectation.
- *Sammy Larbi*
+ *claudiob*
-* Change the signature of `fetch_multi` to return a hash rather than an
- array. This makes it consistent with the output of `read_multi`.
+* Deprecate `MissingSourceFile` in favor of `LoadError`.
- *Parker Selbert*
+ `MissingSourceFile` was just an alias to `LoadError` and was not being
+ raised inside the framework.
-* 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.
+ *Rafael Mendonça França*
- # app/models/concerns/authentication.rb
- concern :Authentication do
- included do
- after_create :generate_private_key
- end
+* Add support for error dispatcher classes in `ActiveSupport::Rescuable`.
+ Now it acts closer to Ruby's rescue.
- class_methods do
- def authenticate(credentials)
- # ...
+ Example:
+
+ class BaseController < ApplicationController
+ module ErrorDispatcher
+ def self.===(other)
+ Exception === other && other.respond_to?(:status)
end
end
- def generate_private_key
- # ...
+ rescue_from ErrorDispatcher do |error|
+ render status: error.status, json: { error: error.to_s }
end
end
- # app/models/user.rb
- class User < ActiveRecord::Base
- include Authentication
- end
+ *Genadi Samokovarov*
+
+* Add `#verified` and `#valid_message?` methods to `ActiveSupport::MessageVerifier`
+
+ Previously, the only way to decode a message with `ActiveSupport::MessageVerifier`
+ was to use `#verify`, which would raise an exception on invalid messages. Now
+ `#verified` can also be used, which returns `nil` on messages that cannot be
+ decoded.
+
+ Previously, there was no way to check if a message's format was valid without
+ attempting to decode it. `#valid_message?` is a boolean convenience method that
+ checks whether the message is valid without actually decoding it.
- *Jeremy Kemper*
+ *Logan Leger*
-Please check [4-1-stable](https://github.com/rails/rails/blob/4-1-stable/activesupport/CHANGELOG.md) for previous changes.
+Please check [4-2-stable](https://github.com/rails/rails/blob/4-2-stable/activesupport/CHANGELOG.md) for previous changes.