Update RecordNotFound exception cases to include a message with the
Model that the Record was not found in.
Specify dummy app's db migrate path in plugin's test_helper.rb
Use #inject over #sum to build PG create DB statement

While investigating #16951 I found that another library's monkey-patching of
`Enumerable` was causing the test migrations helper to break when trying to
build the `CREATE DATABASE` statement. The prior approach used `#sum` to build
the string from the options hash.

As the code that combines the options to build the database statement is not
user-facing, using `#inject` here instead will remove the only place where the
database creation/migration code is dependent on ActiveSupport's monkey-patching
of `Enumerable`.
Merge pull request #16954 from geoffharcourt/inject-over-sum

Use #inject over #sum to build PG create DB statement
inject Rack::Lock if config.eager_load is false

If code is not eager loaded constants are loaded on demand. Constant
autoloading is not thread-safe, so if eager loading is not enabled
multi-threading should not be allowed.

This showed up in certain Capybara scenarios: Most Capybara drivers
other than Rack::Test need a web server. In particular, drivers for
JavaScript support. Capybara launches WEBrick in its own thread for
those but that per se is fine, because the spec thread and the server
thread are coordinated.

Problem comes if the page being served in the spec makes Ajax calls.
Those may hit WEBrick in parallel, and since WEBrick is multi-threaded
and allow_concurrency? returns true in the test environment before
this patch, threads are spawned to serve those parallel requests. On
the other hand, since eager_load is false by default in the test
environment, constants are not preloaded.

So the suite is autoloading constants in a multi-threaded set. That's
a receipt for paracetamol. The symptom is random obscure errors whose
messages point somehow to constant autoloading.

As a consequence of this fix for allow_concurrency? WEBrick in
Capybara scenarios no longer runs in multi-threaded mode.

Fixes #15089.
Merge pull request #16936 from untidy-hair/plugin_test_db_migrate_path

Specify dummy app's db migrate path in plugin's test_helper.rb

Conflicts:
	railties/CHANGELOG.md
Delegation works with reserved words passed to `:to`

Fixes #16956.
 Updated comment about features of fixtures

 - Added a note about some features which are not dependent on
   auto-generated ID's.
 - [ci skip]
[ci skip] ActionRecord CHANGELOG docs fixes
Merge pull request #16964 from Agis-/issue-16956

Make delegation work with the reserved words passed to `:to`
Merge pull request #16975 from lethalbrains/master

[ci skip] ActionRecord CHANGELOG docs fixes
Merge pull request #16973 from prathamesh-sonpatki/fixtures-features

 Updated comment about features of fixtures
[ci skip] Reword a comment in concern's documentation

Nothing biggie. Skimmed through `ActiveSupport::Concern` docs these days
and this one comment seemed a bit off.
Merge pull request #16981 from gsamokovarov/concern-docs-comment-reword

[ci skip] Reword a comment in concern's documentation
Merge pull request #15791 from zev/add_model_to_recordnotfound_message

Update RecordNotFound exception cases to include a message with the
Quick fix to address the borken build caused by #15791

This is pretty lame though, so feel free to send a PR with a better fix! ;)

cc @zev @tenderlove
Fix find_by with associations not working with adequate record

For now, we will just skip the cache when a non-column key is used in the hash.
If the future, we can probably move some of the logic in PredicateBuilder.expand
up the chain to make caching possible for association queries.

Closes #16903
Fixes #16884
No need to call to_sym here

The hash is now string-keyed, and [_]reflect_on_association calls `to_s` on the
argument anyway.