Add warning for `rescue_from Exception` and `rescue_from StandardError`

[ci skip]
Replace x.sort_by!.select! with x.select!.sort_by!

The latter has the same speed as the former in the worst case
and faster in general, because it is always better to sort less items.

Unfortunately, `routes.select!{...}.sort_by!{...}` is not possible here
because `select!` returns `nil`, so select! and sort! must be done
in two steps.
Make the isolated tests run on JRuby

As there is no forking on JRuby, we need to spawn sub-processes to make
the tests run in isolation.

Previously, we were defining globally env variables and running the test
file through backticks and delete these variables once the test ran.

Now, we simply rely on IO.popen as this is cross-platform and the env
variables are available during the child-process execution only so there
are no race conditions.

[Ben Browning & Robin Dupret]
Move `attributes_before_type_cast` to `AttributeSet`
`only_integer` of `NumericalityValidator` now allows procs and symbols
Encapsulate knowledge of type objects on `ActiveRecord::Result`

Attempting to reduce the number of places that care about the details of
how type casting occurs. We remove the type casting of the primary key
in `JoinDependecy`, rather than encapsulating it. It was originally
added for consistency with
https://github.com/rails/rails/commit/40898c8c19fa04442fc5f8fb5daf3a8bdb9a1e03#diff-06059df8d3dee3101718fb2c01151ad0R211,
but that conditional was later removed in
https://github.com/rails/rails/commit/d7ddaa530fd1b94e22d745cbaf2e8a5a34ee9734.

What is important is that the same row twice will have the same value
for the primary key, which it will.
Silence warning in test

We still had one file using `column_for_attribute` when it could return
nil, causing deprecation warnings in the tests.
Merge pull request #15894 from sgrif/sg-silence-warning-in-test

Silence warning in test
Always assume strings with non-numeric characters change numeric types

We previously only did this if the old value was zero, to make sure
numericality validations run and failed if the user gave 'wibble' as the
value, which would be type cast to 0. However, numericality validations
will fail if there are any non-numeric characters in the string, so 5 ->
'5wibble' should also be marked as changed.
Merge pull request #15895 from sgrif/sg-numeric-changes

Always assume strings with non-numeric characters change numeric types
Doc pass for `Type::Value` [ci skip]
Merge pull request #15828 from yuki24/add-warning-about-rescue-from-exception

Add warning section for `rescue_from Exception` in Guides
Improves readability...

[ci skip]
Merge pull request #15887 from RudyOnRails/patch-1

Improves readability of this line...
Deal with regex match groups in excerpt

Original implementation has bugs if the regex contains a match group.

Example:

    excerpt('This is a beautiful? morning', /\b(beau\w*)\b/i, :radius => 5)
    Expected: "...is a beautiful? mor..."
    Actual: "...is a beautifulbeaut..."

The original phrase was being converted to a regex and returning the text
either side of the phrase as expected:

    'This is a beautiful? morning'.split(/beautiful/i, 2)
    # => ["This is a ", "? morning"]

When we have a match with groups the match is returned in the array.

Quoting the ruby docs: "If pattern is a Regexp, str is divided where the
pattern matches. [...] If pattern contains groups, the respective matches will
be returned in the array as well."

    'This is a beautiful? morning'.split(/\b(beau\w*)\b/iu, 2)
    # => ["This is a ", "beautiful", "? morning"]

If we assume we want to split on the first match – this fix makes that
assumption – we can pass the already assigned `phrase` variable as the place
to split (because we already know that a match exists from line 168).

Originally spotted by Louise Crow (@crowbot) at
https://github.com/mysociety/alaveteli/pull/1557
Merge pull request #15899 from garethrees/gr-texthelper

Deal with regex match groups in excerpt
Add a '--skip-routes' flag for the Controller generator.

This way it is possible to skip the addition of the 'get "foo/bar"' routes when
generating a controller.
Merge pull request #15885 from lucasmazza/lm-skip-routes

Add a '--skip-routes' flag for the Controller generator.
Fix a bug where NameError#name returns a qualified name in string

Ruby's original behaviour is that :

  * It only returns a const name, not a qualified aname
  * It returns a symbol, not a string
Merge pull request #15836 from DNNX/router-swap-select-sort

Replace x.sort_by!.select! with x.select!.sort_by!