make Hash#extract! more symmetric with Hash#slice
add more testcases and doc about Hash#extract!
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
performance improvements to joins!

Before:

Calculating -------------------------------------
                  ar        87 i/100ms
-------------------------------------------------
                  ar      823.4 (±11.8%) i/s -       4089 in   5.070234s

After:

Calculating -------------------------------------
                  ar        88 i/100ms
-------------------------------------------------
                  ar      894.1 (±3.9%) i/s -       4488 in   5.028161s

Same test as 3a6dfca7f5f5bd45cea2f6ac348178e72423e1d5
Merge pull request #7891 from schneems/schneems/rake_command_warning

Prompt to run rake when accidentally typed rails
Remove the queue container. Premature consolidation. Set up and maintain queues in the classes that use them instead.
Tighten up asset precompile tests
Backpedal from class-oriented config.queue. Set an actual queue instance.
Test that a Rails.queue consumer is automatically started in production
Replace double quotes with single quotes
Merge pull request #7935 from leereilly/minor-gemfile-twerk

Clean up Gemfile entry (replace double quotes with single quotes) [ci skip]
#7914 get default value when type uses schema name
PostgreSQL adapter properly parses default values when using multiple
schemas and domains.

When using domains across schemas, PostgresSQL prefixes the type of the
default value with the name of the schema where that type (or domain) is.

For example, this query:
```
SELECT a.attname, d.adsrc
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = "defaults"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum;
```

could return something like "'<default_value>'::pg_catalog.text" or
"(''<default_value>'::pg_catalog.text)::text" for the text columns with
defaults.

I modified the regexp used to parse this value so that it ignores
anything between ':: and \b(?:character varying|bpchar|text), and it
allows to have optional parens like in the above second example.
#7914 Add change of previous commit to CHANGELOG.md
#7914 Using a better way to get the defaults from db.

According to postgreSQL documentation:
(http://www.postgresql.org/docs/8.2/static/catalog-pg-attrdef.html)
we should not be using 'adsrc' field because this field is unaware of
outside changes that could affect the way that default values are
represented. Thus, I changed the queries to use
"pg_get_expr(adbin, adrelid)" instead of the historical "adsrc" field.