Avoid namespacing routes inside engines

Since #11544, invoking the controller generator, any generated route is
namespaced according to the class_path method. Since a mountable plugin
is namespaced, creating a controller inside would generate a namespaced
route based on the engine's name.

The controller generator now relies on regular_class_path which does not
contain the class hierarchy but the given path.

Fixes #14079.
Fix a bug affecting validations of enum attributes

This fixes a bug where any enum attribute of a model
would be evaluated always as 0 when calling the
database on validations.

This fix converts the value of the enum attribute
to its integer value rather than the string before
building the relation as the bug occured when the
string finally gets converted to integer using
string.to_i which converts it to 0.

[Vilius Luneckas, Ahmed AbouElhamayed]
Merge pull request #14203 from Alwahsh/aabouelhamayed

Fix a bug affecting validations of enum attributes
[ci skip] use secrets.yml instead of secret_token.rb in the action controller guide
`includes` uses SQL parsing when String joins are involved.

This is a partial revert of 22b3481ba2aa55fad1f9a5db94072312b345fb55.
The current implementation of `references_eager_loaded_tables?` needs to know
every table involved in the query. With the current API this is not possible
without SQL parsing.

While a2dab46cae35a06fd5c5500037177492a047c252 deprecated SQL parsing for `includes`.
It did not issue deprecation warnings when String joins are involved. This resulted
in a breaking change after the deprecated behavior was removed (22b3481ba2aa55fad1f9a5db94072312b345fb55).

We will need to rethink the usage of `includes`, `preload` and `eager_load` but for now,
this brings back the old *working* behavior.
Merge pull request #14231 from brianstorti/bs-docs-secret-token

Use secrets.yml instead of secret_token.rb in the docs
Merge pull request #14226 from senny/14109_partial_revert

`includes` uses SQL parsing when String joins are involved.
Improve a bit the 4.1 release notes [ci skip]

Fix a few typos. #present_in has been changed to #presence_in through
commit d61baee5.
[ci skip] correct select examples and doc, ref [522c0fd]
Merge pull request #14230 from kuldeepaggarwal/doc-select

Correct `select` examples and doc, ref [522c0fd] [ci skip]
set the error callback to a nice default in case nobody set an error callback and an error happens
[ci skip] use secrets.secret_key_base instead of config.secret_key_base
use secrets.yml instead of secret_token.rb
Merge pull request #14233 from kuldeepaggarwal/fix-secrets-doc

use `secrets.secret_key_base` instead of `config.secret_key_base`
Remove unnecessary db call when replacing.

When replacing a has_many association with the same one, there is no
need to do a round-trip to the db to create/and drop a new transaction.

[fixes #14220]
live controllers should have live responses

detect the type of controller we're testing and return the right type of
response based on that controller.  This allows us to stop doing the
weird sleep thing.
use built-in exception handling in live controllers

when an exception happens in an action before the response has been
committed, then we should re-raise the exception in the main thread.
This lets us reuse the existing exception handling.
Merge pull request #14195 from robin850/issue-14079

Avoid namespacing routes inside engines
make sure we wait for the threads to shut down before asserting closure
Replace map.flatten(1) with flat_map
Merge pull request #14240 from sferik/flat_map

Replace map.flatten(1) with flat_map