Fix rational to decimal on type_cast_from_user
Change class evaluation for Rationals in cast_value
Fix case statement to use ::Numeric and ::String
Fix decimal_test module and add new test for object responding to to_d
Remove need for macro instance var

Same as we did for collection, removed the `@macro` instance var
and it is now set in each association. Unfortunately it can't be
left undefined in AssociationReflection so it has to be set there.
For now I am setting it to NotImplementedError since there is no
default macro and it changes based on the reflection type.
Merge pull request #16198 from eileencodes/remove-need-for-macro-instance-var

Remove need for macro instance var
docs, `select` and friends with `multiple=true` include a blank string.

[Jonas Baumann & Yves Senn]

The submitted params from a select with `multiple: true` look as follows:

```
{post: {category: [""]}}

{post: {category: ["", "Category 1", "Category 2"]}}
```

This is a follow up to #1552.
helper methods are public, so we can just call them

also if you want a path from a named helper, you should call
helper_path, not helper_url(:only_path => true).
use a strategy object for generating urls in named helpers

since we know that the route should be a path or fully qualified, we can
pass a strategy object that handles generation.  This allows us to
eliminate an "if only_path" branch when generating urls.
Make restore_attributes public

Also make it accept a list of attributes to be changed. This will make
possible to restore only a subset of the changed attributes.

Closes #16203
pass the route name to define_url_helper

this allows us to avoid 2 hash allocations per named helper definition,
also we can avoid a `merge` and `delete`.
`recall` should be `path_parameters`, also make it required

"recall" is a terrible name.  This variable contains the parameters that
we got from the path (e.g. for "/posts/1" it has :controller => "posts",
:id => "1").  Since it contains the parameters we got from the path,
"path_parameters" is a better name.  We always pass path_parameters to
`generate`, so lets make it required.
[EXPERIMENTAL] run actionpack tests in parallel

only on forking systems though.  Feel free to revert this if it causes
problems.
Merge pull request #16188 from marianovalles/fix_rational_to_decimal_type_cast

Fix rational to decimal on type_cast_from_user
Prefer if/else for this case

One of the branches is using a proc to check if the value respond_to a
method so it is better to not do case comparations
Disable some tests on SQLite

These tests were passing before because the precision were not using to
cast the value. Not it is being used so it would fail on sqlite3
only parallelize on forking systems
do not restart the service, just stop it
fix filesystem race condition
check for valid options in validate method

This change prevents a certain class of user error which results when
mistakenly using the `validate` class method instead of the `validates`
class method.

Only apply when all arguments are symbols, because some validations use
the `validate` method and pass in additional options, namely the
`LenghValidator` via the `ActiveMode::Validations::validates_with`
method.