Make sure :environment task is executed before db:schema:load or db:structure:load

Otherwise, if schema_format = :sql, you will see:
$ rake db:setup --trace
** Invoke db:setup (first_time)
** Invoke db:schema:load_if_ruby (first_time)
** Invoke db:create (first_time)
** Invoke db:load_config (first_time)
** Invoke rails_env (first_time)
** Execute rails_env
** Execute db:load_config
** Execute db:create
db_example_development already exists
db_example_test already exists
** Execute db:schema:load_if_ruby       #<-------- :environment hasn't been executed yet
** Invoke db:schema:load (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:schema:load
~/db_example/db/schema.rb doesn't exist yet. Run `rake db:migrate` to create it then try again.
allow perform deliveries to be set within mailer action
polymorphic_url with an array generates a query string

Generating an URL with an array of records is now able to build a query
string if the last item of the array is a hash.
Refactor passing url options via array for polymorphic_url

Rather than keep the url options in record_or_hash_or_array, extract it
and reverse merge with options as it may contain important private keys
like `:routing_type`.

Closes #7259
Merge branch 'polymorphic_url_builds_query_string_with_array'
Merge pull request #7202 from asanghi/perform_deliveries_in_mail

Allow perform_deliveries to be set within mailer action
Simplify logical statement
Renamed _path_segments to _recall
RouteSet: cleanup some unneeded compexity
Merge pull request #7262 from bogdan/refator_route_set

Refator route set
Revert "Refactor passing url options via array for polymorphic_url"

Passing options as the last value in an array doesn't work with form_for.
This reverts commit 6be564c7a087773cb0b51c54396cc190e4f5c983.
Revert "polymorphic_url with an array generates a query string"

Passing options as the last value in an array doesn't work with form_for.
This reverts commit 61c8a4d926343903593a27080216af7e4ed81268.
Remove warning: `*' interpreted as argument prefix
Merge pull request #7268 from arunagw/warning-removed-small

Remove warning: `*' interpreted as argument prefix
Changing AR:CollectionAssociation#empty? to use #exists?

COUNT(*) queries can be slow in PostgreSQL, #exists? avoids this by
selecting a single record.
Merge pull request #7270 from beerlington/use_exists_for_empty

Changing AR:CollectionAssociation#empty? to use #exists?
removes usage of Object#in? from the code base (the method remains defined by Active Support)

Selecting which key extensions to include in active_support/rails
made apparent the systematic usage of Object#in? in the code base.
After some discussion in

    https://github.com/rails/rails/commit/5ea6b0df9a36d033f21b52049426257a4637028d

we decided to remove it and use plain Ruby, which seems enough
for this particular idiom.

In this commit the refactor has been made case by case. Sometimes
include? is the natural alternative, others a simple || is the
way you actually spell the condition in your head, others a case
statement seems more appropriate. I have chosen the one I liked
the most in each case.
Update changelog
Merge pull request #7140 from seamusabshere/patch-1

Make sure :environment task is executed before db:schema:load or
db:structure:load
Add CHANGELOG entry for 3c731a4ad62430100ba0b65bc966aa6dc6280c5f