# CHANGELOG # Unreleased # 3.0.0 / 2021-09-09 * [#105](https://github.com/gocardless/coach/pull/105) Add support for module/class names to be passed to `Handler.new` and `Router#draw` to allow routes to be defined without loading the routes constants, which makes using Zeitwerk much easier. * Add Ruby 3 support ## Breaking changes * Remove Ruby 2.4 and 2.5 support # 2.3.0 / 2020-04-29 * [#90](https://github.com/gocardless/coach/pull/90) Instrument status `0` instead of `500` when Coach::Handler catches an exception # 2.2.1 / 2020-02-06 * [#85](https://github.com/gocardless/coach/pull/85) Uses [commander](https://github.com/commander-rb/commander) for CLI option parsing # 2.2.0 / 2020-01-08 * [#68](https://github.com/gocardless/coach/pull/68) Add `coach` CLI and add documentation to README # 2.1.0 / 2019-11-14 * [#79](https://github.com/gocardless/coach/pull/79) RequestSerializer will now return the 'http_content_type' and 'http_content_length' filtered headers. * [#75](https://github.com/gocardless/coach/pull/75) Documentation update. # 2.0.0 / 2019-06-13 ## Breaking changes * [#70](https://github.com/gocardless/coach/pull/70) The following deprecated event names have been removed: * `coach.handler.start` * `coach.middleware.start` * `coach.middleware.finish` * `coach.handler.finish` * `coach.request` * [#56](https://github.com/gocardless/coach/pull/56) Support for Ruby 2.2 and 2.3 has been dropped. See our [compatibility policy](https://github.com/gocardless/coach/blob/master/docs/COMPATIBILITY.md) for more information. ## Other changes * [#59](https://github.com/gocardless/coach/pull/59) Request data included in the `request.coach` event includes a `session_ip` field which replaces the erroneously named `session_id`. The latter is deprecated and will be removed in a future release. * [#60](https://github.com/gocardless/coach/pull/60) Add `Middleware.requires?`, which behaves like `Middleware.provides?` but for requirements. * [#52](https://github.com/gocardless/coach/pull/52) Add `duration_seconds` to statistic logging. The `duration` field is now deprecated and will be removed in a future release. # 1.0.0 / 2018-04-19 ## Breaking changes * [#41](https://github.com/gocardless/coach/pull/41) Ruby versions before 2.1 are no longer supported. * [#29](https://github.com/gocardless/coach/pull/29) To use Coach's included matchers in RSpec, you should now `require coach/rspec`. `Coach.require_matchers!` is deprecated and will be removed in a future version. * [#47](https://github.com/gocardless/coach/pull/47) If you're using Coach's support for [instrumentation](https://github.com/gocardless/coach#instrumentation) with `ActiveSupport::Notifications`, the event names Coach publishes have changed to be more consistent with other libraries. The previous names will work for now, but will be removed in a future version. The changes are as follows: | Before | After | | ----------------------- | ------------------------| | coach.handler.start | start_handler.coach | | coach.middleware.start | start_middleware.coach | | coach.middleware.finish | finish_middleware.coach | | coach.handler.finish | finish_handler.coach | | coach.request | request.coach | # 0.5.1 / 2017-08-21 * [#26](https://github.com/gocardless/coach/pull/26) Add `started_at` to the request event metadata. # 0.5.0 / 2017-08-07 * [#24](https://github.com/gocardless/coach/pull/24) Use ActiveSupport.instrument for coach.handler.finish event. Potentially breaking change as the coach.handler.finish subscribers may trigger twice, depending on how users have subscribed to them. # 0.4.6 * [#22](https://github.com/gocardless/coach/pull/22) Publish ActiveSupport notifications even on errors # 0.4.5 / 2017-04-26 * [#17](https://github.com/gocardless/coach/pull/17) Only require rspec/expectations when adding new matchers * [#18](https://github.com/gocardless/coach/pull/18) Properly pin version of rubocop # 0.4.4 / 2016-08-26 * [#16](https://github.com/gocardless/coach/pull/16) Fix middleware lookup issue in router # 0.4.3 / 2016-05-07 * [#15](https://github.com/gocardless/coach/pull/15) Clean up `Coach::Handler#inspect` # 0.4.2 / 2016-05-07 * [#13](https://github.com/gocardless/coach/pull/13) Add support for Rails 5. # 0.4.1 / 2016-03-09 * [#10](https://github.com/gocardless/coach/pull/10) Removed a dependency that Coach's RSpec matchers had on Rails' `.third` array method. # 0.4.0 / 2015-12-21 * `Coach::Router.new` now accepts a `ActionDispatch::Routing::Mapper`, rather than a `Rails::Application`. This means that when initialising a `Coach::Router` from within a `routes.draw` block, you may now pass `self` to the router, preserving surrounding context (e.g. block-level scopes). # 0.3.0 / 2015-11-24 * Allow Handler to take a config hash, just like Middleware # 0.2.3 / 2015-08-24 * Allow config values to be inherited # 0.2.2 / 2015-07-17 * Diagramatic errors of missing requirements # 0.2.1 / 2015-06-29 * Logging of metadata with ActiveSupport notifications # 0.2.0 / 2015-06-17 Initial public release. This library is in beta until it hits 1.0, so backwards incompatible changes may be made in minor version releases.