make Hash#extract! more symmetric with Hash#slice
add more testcases and doc about Hash#extract!
Padding expires_in by 5 minutes on dalli key write to facilitate :race_condition_ttl working correctly.
warning removed: shadowing outer local variable - value
Immediately run queued jobs in tests. Otherwise you have to explicitly drain the queue to actually deliver your emails.
learn ActiveRecord::QueryMethods#order work with hash arguments
Add .rake to `rake notes` and `rake notes:custom`
Merge pull request #7765 from insside/clever-order

learn ActiveReccord::Querying#order work with hash arguments
Merge pull request #7919 from arunagw/warning_removed_shadowing

warning removed: shadowing outer local variable - value
Merge pull request #7913 from mje113/master

MemCacheStore's move to dalli as a backend broke :race_condition_ttl support
Merge pull request #7871 from bjnord/master

Support another file type .rake in `rake notes`
Move the TestQueue tests to the proper file
ActiveSupport::SynchronousQueue doesn't have the drain method.

Now we are using teh SynchronousQueue in the test environment instead of
the TestQueue
Split asset url helpers into seperate AssetUrlHelper
Merge pull request #7923 from josh/seperate-asset-tag-and-url-concerns

Split asset url helpers into seperate AssetUrlHelper
trailling whitespace cleanup in query_methods.rb
Merge pull request #7926 from senny/whitespace_cleanup

trailling whitespace cleanup in query_methods.rb [ci skip] 
Merge pull request #7007 from Mik-die/hash_extract

make Hash#extract! more symmetric with Hash#slice
Prompt to run rake when accidentally typed rails

Developers from all levels will accidentally run rake tasks using the `rails` keyword when they meant to use `rake`. Often times beginners struggle with the difference between the tools. The most common example would be `$ rails db:migrate`

Rather than telling the developer simply that they did not use a valid rails command, we can see if it was a valid rake command first. If it is a valid rake command we can auto execute it giving the user a period of time to cancel if that isn't what they intended.

Here is what `rake db:migrate` would look like if you cancel the command:


```sh
$ rails db:migrate
Assuming you meant: $ rake db:migrate 
press any key to cancel in 3 seconds
> 
command terminated ...
```

Here is what it looks like if you don't cancel the command:

```sh
$ rails db:migrate
Assuming you meant: $ rake db:migrate 
press any key to cancel in 3 seconds
> 
Running: $ rake db:migrate 
==  Foo: migrating ============================================================
==  Foo: migrated (0.0000s) ===================================================
```
Speed up relation merging by reducing calls to Array#-

before:

Calculating -------------------------------------
                  ar        83 i/100ms
-------------------------------------------------
                  ar      832.1 (±4.0%) i/s -       4233 in   5.096611s

after:

Calculating -------------------------------------
                  ar        87 i/100ms
-------------------------------------------------
                  ar      839.0 (±9.3%) i/s -       4176 in   5.032782s

Benchmark:

require 'config/environment'
require 'benchmark/ips'

GC.disable

unless User.find_by_login('tater')
  u = User.new
  u.login = 'tater'
  u.save!
end

def active_record
  user = User.find_by_login('tater')
  starred = user.starred_items.count
end

active_record

Benchmark.ips do |x|
  x.report("ar") { active_record }
end