Merge pull request #16875 from alan/dont_autosave_has_one_through_record

Don't autosave unchanged has_one through records

Conflicts:
	activerecord/CHANGELOG.md
Use has_attribute?
[ci skip] AJ docs fixes
1. Indentation
2. Spaces issues
3. Spelling correction
4. Grammar correction
5. Add #:nodoc: to all internal classes
Merge pull request #16944 from akshay-vishnoi/docs-rails-4point2

[ci skip] AJ docs fixes
Merge pull request #16930 from todd/upgrade_guide

Added Responders docs, made Web Console docs more consistent. [ci skip]
[ci skip] ActiveSupport CHANGELOG fixes
1. spacing issues
2. spelling correction
3. grammar correction
4. Add missing docs
Merge pull request #16948 from akshay-vishnoi/docs-rails-4point2

[ci skip] ActiveSupport CHANGELOG fixes
Grammar correction in ActiveSupport CHANGELOG [ci skip]
Merge pull request #16950 from akshay-vishnoi/docs-rails-4point2

Grammar correction in ActiveSupport CHANGELOG [ci skip]
[ci skip] ActiveModel CHANGELOG docs fixes
Merge pull request #16952 from akshay-vishnoi/docs-rails-4point2

[ci skip] ActiveModel CHANGELOG docs fixes
[ci skip] ActionView and ActionMailer CHANGELOG docs fixes
Merge pull request #16953 from akshay-vishnoi/docs-rails-4point2

[ci skip] ActionView and ActionMailerCHANGELOG docs fixes
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
Cleaner queuing of jobs using Delayed Job
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]