Added test to ensure that DescendantsTracker does not leak memory on singleton classes
Remove sqlite specific`supports_autoincrement?` which always defaults to true
Add params option for button_to

The parameters are rendered as hidden form fields within the generated
form. This is useful for when a record has multiple buttons associated
with it, each of which target the same controller method, but which
need to submit different attributes.
fixed a doc bug in the CHANGELOG.md s/does no longer depend on/no longer depends on/
Use ActiveRecord::Base#update! instead of #update_attributes!
Just change ENV and restore it afterwards.

Stubbing ENV[] is not safe outside MRI. At some point after the
stubbing has occurred a backtrace is printed to the ActiveSupport
warning log: there Rubinius accesses ENV['RBX_NOCOLOR'] to determine
if it should print the backtrace with colors or not, causing the
stub to fail. Other implementations might access ENV in a different
way too, we just can't predict it.
The only thing we can do here is to actually set the ENV with what
we want and restore it afterwards.
Assert presence of "frozen" in error message, not the full MRI message.

Related to all the other issues regarding message independent assertions
to make Rails compatible with other Ruby implementations other than MRI.

The best way here would be to have a specific error raised when modifying
frozen objects, like FrozenObjectError or something. But since Ruby
doesn't provide such a thing, we must limit the assertion to the lowest
common denominator, which is word "frozen".
Allow methods arity below -1 in assert_responds.

Every method from MRI's core classes is written in C. This means
Method#arity always returns -1 for methods with a variable number of
arguments. This is not the case with Rubinius, where, for example
Array#slice! is implemented in Ruby and has arity -2, since is
defined as def slice!(start, length = undefined)
Fixes #11773 when using includes combined with select, the select statement was overwritten.
Respect `SCRIPT_NAME` when using `redirect` with a relative path

Example:
    # application routes.rb
    mount BlogEngine => '/blog'

    # engine routes.rb
    get '/admin' => redirect('admin/dashboard')

This now redirects to the path `/blog/admin/dashboard`, whereas before it
would've generated an invalid url because there would be no slash between
the host name and the path. It also allows redirects to work where the
application is deployed to a subdirectory of a website.

Fixes #7977
Fix wrong variable name used in the select_day method documentation

The variable name created in the example is `my_date`, the methods  were using `my_time` instead.
Use bcrypt's public cost attr, not internal constant

See:

- https://github.com/codahale/bcrypt-ruby/pull/63
- https://github.com/codahale/bcrypt-ruby/pull/64
- https://github.com/codahale/bcrypt-ruby/pull/65
Merge pull request #12339 from tjschuck/bcrypt_cost_attr

Use bcrypt's public cost attr instead of internal constant
Keep code consistent with previous code blocks.

[ci skip]
simplify each method.

Stop writing terrible code Aaron.  This is Ruby, not Scheme
stop splatting things back and forth
stuff the join dependency object in the "anything goes" hash.
merge JoinDependency as outer joins

Merge JoinDependency objects as outer joins
delete unused code

Now that we merge trees from the top down, we don't need to search
through the whole tree for particular nodes, just walk it and merge.
nodes do not need to be sorted