use feature detection to decide which implementation to use

Decouple the code from the particular Ruby version.
Prevent [response].flatten from recursing infinitely.

Returning `self` from within the array returned by `to_ary`
caused this. Instead, we can just substitute another object.
It provides the `each` behavior required by the rack spec.
use File.exist? instead of File.exists?
Merge pull request #13983 from hsbt/remove-warning

use File.exist? instead of File.exists?
FilterParameters is referenced at the class level from the Request

Since it's already required in the file, we don't need to use autoload
too. This commit is symmetrical change to 0b10180 for Response.
Fix grammar of internal comment and modify it's location
Specify what #starts_with? we're talking about. Also added a note what
kind of exception we should expect for this internal comment.
docs, link MySQL manual for multi column indexes. [ci ckip].

Closes #9131.
Use full-length version of multiple from c7abc51
adds a section about booleans in the API guidelines [ci skip]
Fixed a grammatical error in Booleans section of API documentation guide
from e1e17a5
move alias method `sanitize_conditions` to a correct place
add activerecord test coverage for `sanitize_sql_array`

check it is handles empty statement
Remove end of line whitespace from bb87c16
Merge pull request #13985 from zzak/remove_old_todo_in_url_for_test

Remove outdated TODO from url_for test, this test was fixed in 900a2d30
Merge pull request #13990 from zzak/ap_dont_autoload_filter_parameters

FilterParameters is referenced at the class level from the Request
Merge pull request #13982 from dskang/fix-response-flatten-infinite-recursion

Fix response flatten infinite recursion
Clarifying confusing phrasing
Merge branch 'master' of github.com:rails/docrails

Conflicts:
	guides/source/active_record_validations.md
	guides/source/api_documentation_guidelines.md
	guides/source/configuring.md
Merge pull request #13994 from elysdir/master

Clarifying confusing phrasing