Merge pull request #13324 from fphilipe/fix-syntax-error-in-example

Fix syntax error in redirect_to example
Merge pull request #13312 from arthurnn/fix_db_task_req

db:test:clone and prepare must load environment
Conflicts:
	activerecord/CHANGELOG.md
Merge pull request #13333 from kia84/master

Added `absence` parameter to pluralization table [ci skip]
Merge pull request #13328 from teohm/dbconsole_support_database_url

Fixed rails dbconsole to support DATABASE_URL
Conflicts:
	railties/CHANGELOG.md
Merge pull request #10942 from yangchenyun/mine

correct documentation about active_record.default_timezone
Remove the link for code.whytheluckystiff.net

This is not a valid URL.

[ci skip]
Conflicts:
	guides/source/rails_application_templates.md
#none documentation updated [ci skip]
Show routes defined under assets prefix

Closes #9625

Conflicts:
	actionpack/CHANGELOG.md
	actionpack/lib/action_dispatch/routing/inspector.rb
Fix changelog indent [ci skip]
Fix assertions for testing unknown formats using Mime::NullType
Merge pull request #13412 from arthurnn/quote_id_not_id

quoting: Check if id is a valid method before using it
converts hashes in arrays of unfiltered params to unpermitted params [fixes #13382]

Conflicts:
	actionpack/CHANGELOG.md
refactors AC::Parameters#fetch

AC::Parameters#fetch was refactored in 7171111 to prevent self mutation, but
in doing so it hardcodes logic #convert_hashes_to_parameters is supposed to
encapsulate.

Better leave the delegation, and add a way to avoid mutating self in there.
optimizes array conversion in AC::Parameters
Test with 2.1.0-rc1

Conflicts:
	.travis.yml
Merge pull request #13451 from dmathieu/quoting_non_strings

Fix typecasting array of integers
CHANGELOG entry for #13451. [ci skip]

Conflicts:

	activerecord/CHANGELOG.md
build fix for #13451. Declare missing attribute.
Move the null mime type to request.format

TLDR: always return an object that responds to the query methods from
request.format, and do not touch Mime::Type[] lookup to avoid bugs.

---

Long version:

The initial issue was about being able to do checks like
request.format.html? for request with an unknown format, where
request.format would be nil.

This is where the issue came from at first in #7837 and #8085
(merged in cba05887dc3b56a46a9fe2779b6b228880b49622), but the
implementation went down the path of adding this to the mime type
lookup logic.

This unfortunately introduced subtle bugs, for instance in the merged
commit a test related to send_file had to be changed to accomodate the
introduction of the NullType.

Later another bug was found in #13064, related to the content-type being
shown as #<Mime::NullType:...> for templates with localized extensions
but no format included. This one was fixed in #13133, merged in
43962d6ec50f918c9970bd3cd4b6ee5c7f7426ed.

Besides that, custom handlers were not receiving the proper template
formats anymore when passing through the rendering process, because of
the NullType addition. That was found while migrating an application
from 3.2 to 4.0 that uses the Markerb gem (a custom handler that
generates both text and html emails from a markdown template).

---

This changes the implementation moving away from returning this null
object from the mime lookup, and still fixes the initial issue where
request.format.zomg? would raise an exception for unknown formats due to
request.format being nil.

Conflicts:
	actionpack/CHANGELOG.md
	actionpack/lib/abstract_controller/rendering.rb
	actionpack/lib/action_controller/metal/rendering.rb
Fix a couple issues on PostgreSQL with array columns

This is a combination of 3 commits:

--- 56510091fb8d178ec7c2391bed9fbdb9e3a54287

Do not consider PG array columns as number or text columns

The code uses these checks in several places to know what to do with a
particular column, for instance AR attribute query methods has a branch
like this:

    if column.number?
      !value.zero?
    end

This should never be true for array columns, since it would be the same
as running [].zero?, which results in a NoMethodError exception.

Fixing this by ensuring that array columns in PostgreSQL never return
true for number?/text? checks.

Since most of the array support was based on the postgres_ext lib, it's
worth noting it does the same thing for numeric array columns too:

https://github.com/dockyard/postgres_ext/blob/v1.0.0/lib/postgres_ext/active_record/connection_adapters/postgres_adapter.rb#L72

This extended the same logic for text columns to ensure consistency.

--- 73bba4c1e1f7fa23aa1a126971338d94ae42398f

Serialize postgres' hstore, json and array types correctly in AR update methods.

Fixes #12261. Closes #12395.

--- 9e1740af9c1a00980b30c66aba3c223c33e646e4

Tidy up fix for PG extensions quoting

Always pass in the column for quote_bound_value and quote using it in
case it exists there.