avoid using alias in generators

Ruby's alias produces public methods, causing a spurious Thor task
to be created.  For example, this is the reason MigrationGenerator
currently has two tasks:

    > ActiveRecord::Generators::MigrationGenerator.all_tasks.keys
    => ["singular_name", "create_migration_file"]

singular_name was meant to be an attribute, not a task.  Because it's
public, it gets called as a task every time the generator is invoked.

The fix is to ensure all generator methods have the correct
visibility.
Fix migrations with enable_extension

When using ActiveRecord::Base.table_name_prefix and/or
table_name_suffix, extension names got the same treatment as table names
when running migrations. This led to migrations that tried to call, for
example, enable_extension("prefix_hstore") on the connection.
Hash#deep_*_keys(!) recurse into nested arrays.

Following methods now recursively transform nested arrays, too.

* Hash#deep_transform_keys
* Hash#deep_transform_keys!
* Hash#deep_stringify_keys
* Hash#deep_stringify_keys!
* Hash#deep_symbolize_keys
* Hash#deep_symbolize_keys!
Check authentication scheme in Basic auth

`authenticate_with_http_basic` and its families should check the authentication
schema is "Basic".

Different schema, such as OAuth2 Bearer should be rejected by basic auth, but
it was passing as the test shows.

This fixes #10257.
Run login_procedure only when the auth_scheme is valid
Added partial days support to `DateTime`'s `advance` method.

You can now add partial days (e.g. 2.5.days) to `DateTime` with the advance method.
This was acheived by mimicing the `advance` implementation in `Time`.
Fixed changelog
Refactor AR's validations_test.rb

The `:context` switch feature is implemented in
ActiveRecord::Validations#valid? method, so we should rename the test
names, and execute `valid?` in the test.

Change test name in AR's validations_test.rb

This test is testing save method's code
Fix bugs with changed attributes tracking when transaction gets rollback
Fix Hash#deep_merge bug and improve documentation — resolves #12738

Previously merging into a hash with a falsy value would not result in
the merge-block being called. The fix is simply to check for presence
of the key in the hash.

The documentation example for `deep_merge` now appropriately
demonstrates what a deep merge does.
Fix serialized field returning serialized data after update_column
Fixes Issue #13466.

Changed the call to a scope block to be evaluated with instance_eval.
The result is that ScopeRegistry can use the actual class instead of base_class when
caching scopes so queries made by classes with a common ancestor won't leak scopes.
Fix Formatting in AR Readme

Don't make free form text appear in code blocks [ci skip]
Arel master is 6.0.0
Get rid of extra local var that does not add to the logic

There are too many "action name" variables around the process method.
Get rid of unused method in AR Post test model
Put back Relation#join method as a delegate to Array

This is a regression 4.0 -> 4.1 fix.
In 4.1.0 Relation#join is delegated to Arel#SelectManager.
In 4.0 series it is delegated to Array#join

This patch puts back the behaviour of 4.0
Merge pull request #14978 from bogdan/relation-join

[Regression 4.0 -> 4.1] Put back Relation#join method as a delegate to Array
Improve CHANGELOG entry [ci skip]
Add support for module-level table_suffix in models

This makes table_name_suffix work the same as table_name_prefix when
using namespaced models. Pretty much the same as 67d1cec.