don't log errors when all is fine
Small Action View Overview edits [ci skip]

Some small grammar and readability edits
[ci skip] Document PublicExceptions middleware
[ci skip] document ActionDispatch::FileHandler
[ci skip] Document ActionDispatch::Static
Uppercase HTML in docs.

[skip ci]
Small grammar fix in pluck description
Correctly determine if migration is needed.

This method would assume that if last migration in the migrations
directory matched the current schema version, that the database was up
to date, but this does not account for new migrations with older
timestamps that may be pending.
`overriden` => `overridden`
[ci skip] Update links in getting_started guide.
Define the Duration#instance_of? method

Since Duration is extending from ProxyObject which extends itself from
BasicObject, the Duration object doesn't respond to the #instance_of?
method. Thus, the #method_missing hook get triggered, delegating the
method to its `value` attribute.

However, Rubinius' #eql? definition relies on #instance_of?, thus this
will equal to true with a Fixnum (since its `value` attribute is a
Fixnum) while it should not.

The previous behavior was wrong anyway, no matter the implementation.
Grammar pass

[ci skip]

Add improvements from @eileencodes [skip ci]
Remove to_s from reflection.type in add_constraints

The instance var is already saved as a string in the initialization
method of AssociationReflection.

See https://github.com/rails/rails/blob/master/activerecord/lib/active_record/reflection.rb#L273
Merge pull request #16550 from eileencodes/remove-unnecessary-to_s-from-add_constraints-method

Remove to_s from reflection.type in add_constraints
Merge pull request #16542 from seamusabshere/numerify-pool-checkout-timeout-from-urls-4-1-stable

Make sure :checkout_timeout and :dead_connection_timeout are numbers
Conflicts:
	activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb
Make `AC::Params#to_h` return Hash with safe keys

`ActionController::Parameters#to_h` now returns a `Hash` with
unpermitted keys removed. This change is to reflect on a security
concern where some method performed on an `ActionController::Parameters`
may yield a `Hash` object which does not maintain `permitted?` status.
If you would like to get a `Hash` with all the keys intact, duplicate
and mark it as permitted before calling `#to_h`.

    params = ActionController::Parameters.new(name: 'Senjougahara Hitagi')
    params.to_h # => {}

    unsafe_params = params.dup.permit!
    unsafe_params.to_h # => {"name"=>"Senjougahara Hitagi"}

    safe_params = params.permit(:name)
    safe_params.to_h # => {"name"=>"Senjougahara Hitagi"}

This change is consider a stopgap as we cannot chage the code to stop
`ActionController::Parameters` to inherit from
`HashWithIndifferentAccess` in the next minor release.

Also, adding a CHANGELOG entry to mention that
`ActionController::Parameters` will not inheriting from
`HashWithIndifferentAccess` in the next major version.
Add missing `Hash` methods to `AC::Parameters`

This is to make sure that `permitted` status is maintained on the
resulting object.

I found these methods that needs to be redefined by looking for
`self.class.new` in the code.

* extract!
* transform_keys
* transform_values
Refactor code to reduce duplicate `self.class.new`
Seperate Parameters accessors and mutators tests
Fix failing test on several methods on Parameter

* `each`
* `each_pair`
* `delete`
* `select!`