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.
Merge pull request #7917 from dfens/master

Cosmetic changes: remove trailing whitespaces from tests
Revert "Key the attributes hash with symbols"

This reverts commit 86c3dfbd47cb96af02daaa655963292b1a1b110e.

Conflicts:
	activerecord/lib/active_record/attribute_methods/read.rb

Reason: whilst this increased performance, it also presents a DoS risk
via memory exhaustion if users were allowing user input to dictate the
arguments of read/write_attribute. I will investigate alternative ways
to cut down on string allocations here.
Don't allocate new strings in compiled attribute methods

This improves memory and performance without having to use symbols which
present DoS problems. Thanks @headius and @tenderlove for the
suggestion.

Benchmark
---------

require 'active_record'
require 'benchmark/ips'

ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database:
':memory:')

class Post < ActiveRecord::Base
  connection.create_table :posts, force: true do |t|
    t.string :name
  end
end

post = Post.create name: 'omg'

Benchmark.ips do |r|
  r.report('Post.new')          { Post.new name: 'omg' }
  r.report('post.name')         { post.name }
  r.report('post.name=')        { post.name = 'omg' }
  r.report('Post.find(1).name') { Post.find(1).name }
end

Before
------

Calculating -------------------------------------
            Post.new      1419 i/100ms
           post.name      7538 i/100ms
          post.name=      3024 i/100ms
   Post.find(1).name       243 i/100ms
-------------------------------------------------
            Post.new    20637.6 (±12.7%) i/s -     102168 in   5.039578s
           post.name  1167897.7 (±18.2%) i/s -    5186144 in   4.983077s
          post.name=    64305.6 (±9.6%) i/s -     317520 in   4.998720s
   Post.find(1).name     2678.8 (±10.8%) i/s -      13365 in   5.051265s

After
-----

Calculating -------------------------------------
            Post.new      1431 i/100ms
           post.name      7790 i/100ms
          post.name=      3181 i/100ms
   Post.find(1).name       245 i/100ms
-------------------------------------------------
            Post.new    21308.8 (±12.2%) i/s -     105894 in   5.053879s
           post.name  1534103.8 (±2.1%) i/s -    7634200 in   4.979405s
          post.name=    67441.0 (±7.5%) i/s -     337186 in   5.037871s
   Post.find(1).name     2681.9 (±10.6%) i/s -      13475 in   5.084511s
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]