mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
3aa26cfb19
Previously when converting AS::TimeWithZone to YAML it would be output as a UTC timestamp. Whilst this preserves the time information accurately it loses the timezone information. This commit changes that so that it is saved along with the time information. It also provides nicer encoding of AS::TimeZone instances themselves which previously embedded all of the data from the TZInfo records. Fixes #9183.
251 lines
8.2 KiB
Markdown
251 lines
8.2 KiB
Markdown
* Encoding ActiveSupport::TimeWithZone to YAML now preserves the timezone information.
|
|
|
|
Fixes #9183.
|
|
|
|
*Andrew White*
|
|
|
|
* Added `ActiveSupport::TimeZone#strptime` to allow parsing times as if
|
|
from a given timezone.
|
|
|
|
*Paul A Jungwirth*
|
|
|
|
* `ActiveSupport::Callbacks#skip_callback` now raises an `ArgumentError` if
|
|
an unrecognized callback is removed.
|
|
|
|
*Iain Beeston*
|
|
|
|
* Added `ActiveSupport::ArrayInquirer` and `Array#inquiry`.
|
|
|
|
Wrapping an array in an `ArrayInquirer` gives a friendlier way to check its
|
|
contents:
|
|
|
|
variants = ActiveSupport::ArrayInquirer.new([:phone, :tablet])
|
|
|
|
variants.phone? # => true
|
|
variants.tablet? # => true
|
|
variants.desktop? # => false
|
|
|
|
variants.any?(:phone, :tablet) # => true
|
|
variants.any?(:phone, :desktop) # => true
|
|
variants.any?(:desktop, :watch) # => false
|
|
|
|
`Array#inquiry` is a shortcut for wrapping the receiving array in an
|
|
`ArrayInquirer`.
|
|
|
|
*George Claghorn*
|
|
|
|
* Deprecate `alias_method_chain` in favour of `Module#prepend` introduced in
|
|
Ruby 2.0.
|
|
|
|
*Kir Shatrov*
|
|
|
|
* Added `#without` on `Enumerable` and `Array` to return a copy of an
|
|
enumerable without the specified elements.
|
|
|
|
*Todd Bealmear*
|
|
|
|
* Fixed a problem where String#truncate_words would get stuck with a complex
|
|
string.
|
|
|
|
*Henrik Nygren*
|
|
|
|
* Fixed a roundtrip problem with AS::SafeBuffer where primitive-like strings
|
|
will be dumped as primitives:
|
|
|
|
Before:
|
|
|
|
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
|
|
|
|
After:
|
|
|
|
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*
|
|
|
|
* Enable `number_to_percentage` to keep the number's precision by allowing
|
|
`:precision` to be `nil`.
|
|
|
|
*Jack Xu*
|
|
|
|
* `config_accessor` became a private method, as with Ruby's `attr_accessor`.
|
|
|
|
*Akira Matsuda*
|
|
|
|
* `AS::Testing::TimeHelpers#travel_to` now changes `DateTime.now` as well as
|
|
`Time.now` and `Date.today`.
|
|
|
|
*Yuki Nishijima*
|
|
|
|
* Add `file_fixture` to `ActiveSupport::TestCase`.
|
|
It provides a simple mechanism to access sample files in your test cases.
|
|
|
|
By default file fixtures are stored in `test/fixtures/files`. This can be
|
|
configured per test-case using the `file_fixture_path` class attribute.
|
|
|
|
*Yves Senn*
|
|
|
|
* Return value of yielded block in `File.atomic_write`.
|
|
|
|
*Ian Ker-Seymer*
|
|
|
|
* 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`.
|
|
|
|
Fixes #18550.
|
|
|
|
*Aditya Kapoor*
|
|
|
|
* Add missing time zone definitions for Russian Federation and sync them
|
|
with `zone.tab` file from tzdata version 2014j (latest).
|
|
|
|
*Andrey Novikov*
|
|
|
|
* Add `SecureRandom.base58` for generation of random base58 strings.
|
|
|
|
*Matthew Draper*, *Guillermo Iguaran*
|
|
|
|
* Add `#prev_day` and `#next_day` counterparts to `#yesterday` and
|
|
`#tomorrow` for `Date`, `Time`, and `DateTime`.
|
|
|
|
*George Claghorn*
|
|
|
|
* Add `same_time` option to `#next_week` and `#prev_week` for `Date`, `Time`,
|
|
and `DateTime`.
|
|
|
|
*George Claghorn*
|
|
|
|
* Add `#on_weekend?`, `#next_weekday`, `#prev_weekday` methods to `Date`,
|
|
`Time`, and `DateTime`.
|
|
|
|
`#on_weekend?` returns true if the receiving date/time falls on a Saturday
|
|
or Sunday.
|
|
|
|
`#next_weekday` returns a new date/time representing the next day that does
|
|
not fall on a Saturday or Sunday.
|
|
|
|
`#prev_weekday` returns a new date/time representing the previous day that
|
|
does not fall on a Saturday or Sunday.
|
|
|
|
*George Claghorn*
|
|
|
|
* Change the default test order from `:sorted` to `:random`.
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
* Remove deprecated `ActiveSupport::JSON::Encoding::CircularReferenceError`.
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
* Remove deprecated methods `ActiveSupport::JSON::Encoding.encode_big_decimal_as_string=`
|
|
and `ActiveSupport::JSON::Encoding.encode_big_decimal_as_string`.
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
* Remove deprecated `ActiveSupport::SafeBuffer#prepend`.
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
* Remove deprecated methods at `Kernel`.
|
|
|
|
`silence_stderr`, `silence_stream`, `capture` and `quietly`.
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
* Remove deprecated `active_support/core_ext/big_decimal/yaml_conversions`
|
|
file.
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
* Remove deprecated methods `ActiveSupport::Cache::Store.instrument` and
|
|
`ActiveSupport::Cache::Store.instrument=`.
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
* Change the way in which callback chains can be halted.
|
|
|
|
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.
|
|
|
|
* Add Callbacks::CallbackChain.halt_and_display_warning_on_return_false
|
|
|
|
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`.
|
|
|
|
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)`.
|
|
|
|
The value can also be set with the Rails configuration option
|
|
`config.active_support.halt_callback_chains_on_return_false`.
|
|
|
|
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.
|
|
|
|
*claudiob*
|
|
|
|
* Changes arguments and default value of CallbackChain's :terminator option
|
|
|
|
Chains of callbacks defined without an explicit `:terminator` option will
|
|
now be halted as soon as a `before_` callback throws `:abort`.
|
|
|
|
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.
|
|
|
|
*claudiob*
|
|
|
|
* Deprecate `MissingSourceFile` in favor of `LoadError`.
|
|
|
|
`MissingSourceFile` was just an alias to `LoadError` and was not being
|
|
raised inside the framework.
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
* Add support for error dispatcher classes in `ActiveSupport::Rescuable`.
|
|
Now it acts closer to Ruby's rescue.
|
|
|
|
Example:
|
|
|
|
class BaseController < ApplicationController
|
|
module ErrorDispatcher
|
|
def self.===(other)
|
|
Exception === other && other.respond_to?(:status)
|
|
end
|
|
end
|
|
|
|
rescue_from ErrorDispatcher do |error|
|
|
render status: error.status, json: { error: error.to_s }
|
|
end
|
|
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.
|
|
|
|
*Logan Leger*
|
|
|
|
Please check [4-2-stable](https://github.com/rails/rails/blob/4-2-stable/activesupport/CHANGELOG.md) for previous changes.
|