Fix bug, when ':dependent => :destroy' option violates foreign key constraints, issue #12380
Moved explanation of `--mountable` option up

The example code uses `--mountable`. In previous version this was followed by an explanation of the `--full` option, which doesn't make sense. Later on in the text this is better explained. I moved this explanation up without repeating too much.
Prevent state leak.
Remove redundant code.
remove unnecessary substitution for space in ActionView::Helpers#debug
Always update counter caches in memory when adding records

Before, calling `size` would only work if it skipped the cache, and
would return a different result from the cache, but only if:

- The association was previously loaded
- Or you called size previously
- But only if the size was 0 when you called it

This ensures that the counter is appropriately updated in memory.
[ci skip] correct output for asset_helper methods
    see cc255d3
Formatting fix in AS changelog [ci skip]
Revert "Formatting fix in AS changelog [ci skip]"

This reverts commit cede0363830e28e73feafc662eccae7d1db526bb.

Reason: CHANGELOG should not be updated on docrails
Don't save through records twice

If the through record gets created in an `after_create` hook that is
defined before the association is defined (therefore after its
`after_create` hook) get saved twice. This ensures that the through
records are created only once, regardless of the order of the hooks.
Detect in-place modifications on Strings
Don't use `Column` for type casting in Relation calculations
Don't use column object when calculating type cast defaults

Moves towards removing type casting knowledge from the column entirely
Don't use column object for type casting in `quoting`

We're never going to be able to use the attribute object here, however,
so let's just accept the ugly demeter violation here for now.

Remove test cases which were either redundant with other tests in the
file, or were actually testing the type objects (which are tested
elsewhere)
Don't rely on the column for type casting reflections
Added missing colon in asset manifest JSON.
Further simplify `changed?` conditional for numeric types

`Type::Integer.new.type_cast('') # => nil`, we do not need a special
case to handle this, `nil => ''` already returns false. The only case we
need to handle is `0 => 'wibble'` should be changed, while `0 => '0'`
should not.
Add to guides app and helper objects on command line

[ci skip]
Introduce an object to aid in creation and management of `@attributes`

Mostly delegation to start, but we can start moving a lot of behavior in
bulk to this object.
Merge pull request #15818 from sgrif/sg-attribute-set

Introduce an object to aid in creation and management of `@attributes`