CHANGELOG.md 3.1 KB
Newer Older
1
*   Change the way in which callback chains can be halted.
2

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
    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.
28 29 30

    *claudiob*

31 32 33 34 35 36 37
*   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
38
    terminator's expectation.
39 40 41

    *claudiob*

42 43 44 45 46 47 48
*   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*

R
Robin Dupret 已提交
49 50
*   Add support for error dispatcher classes in `ActiveSupport::Rescuable`.
    Now it acts closer to Ruby's rescue.
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65

        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*

R
Robin Dupret 已提交
66
*   Add `#verified` and `#valid_message?` methods to `ActiveSupport::MessageVerifier`
67

R
Robin Dupret 已提交
68 69 70 71
    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.
72

R
Robin Dupret 已提交
73 74 75
    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.
76

77 78
    *Logan Leger*

79
Please check [4-2-stable](https://github.com/rails/rails/blob/4-2-stable/activesupport/CHANGELOG.md) for previous changes.