Refer to Rails.env only when Rails is defined
Move `SchemaCreation` to its own file instead of `AbstractAdapter`.
Use rescue with a splat rather and catching all and filtering
Merge pull request #12882 from charliesome/use-rescue-splat-in-suppress

Use rescue with a splat rather and catching all exceptions and manually filtering in Kernel#suppress
Updated guides link for 3.2.x to latest stable version 3.2.15 [skip-ci]
Get rid of unused  variable
Merge pull request #12883 from Amit-Thawait/master

Updated guides link for 3.2.x to latest stable version 3.2.15 [ci skip]
Merge pull request #12845 from amatsuda/should_ar_depend_on_rails

Refer to Rails.env from AR only when Rails is defined
Ruby's new Hash syntax applied in actionmailer
Merge pull request #12884 from akshay-vishnoi/refactor

Ruby's new Hash syntax applied in actionmailer
Merge pull request #12832 from vipulnsward/move_schema_creation

Move `SchemaCreation` to its own file instead of `AbstractAdapter`.
Clean up `require ‘active_support/deprecation’` and remove circular require
Merge pull request #12861 from route/missed_require_for_module

Clean up `require ‘active_support/deprecation’` and remove circular require
#presence used
Merge pull request #12886 from akshay-vishnoi/refactor

#presence used
Allow AR:B.where(belongs_to_assoc: val) to accept non AR:B values

When referring to a belongs_to association in a query, nil,
Arrays, or AR:Relations values would cause the PredicateBuilder
to skip over the part of the PredicateBuilder that expanded
the association name into the foreign key.

For example:

    Post.where(author: nil)

This should return posts where the author is not set, but instead
it generates an invalid SQL statement using the association name.

    # Invalid SQL generated previousl
    SELECT "posts".* FROM "posts" WHERE "posts"."author" IS NULL

This fix removes the requirement that the association value is an
ActiveRecord::Base object when converting the association name to its
respective foreign key.

    # New valid SQL returning the expected result.
    SELECT "posts".* FROM "posts" WHERE "posts"."author_id" IS NULL

This also allows values that are arrays or AR:Relations to be handled
properly just like they would be if you used author_id as the column.

    Post.where(author: [Author.find(1), Author.find(2)])
    SELECT "posts".* FROM "posts" WHERE "posts"."author_id" IN (1, 2)

    Post.where(author: Author.where(id: [1,2]))
    SELECT "posts".* FROM "posts"  WHERE "posts"."author_id" IN (SELECT
      "authors"."id" FROM "authors"  WHERE "authors"."id" IN (1, 2))