Session variables for mysql, mysql2, and postgresql adapters can be set
in the new 'variables:' hash in each database config section in database.yml.
The key-value pairs of this hash will be sent in a 'SET key = value, ...'
query on new database connections.

The configure_connection methods from mysql and mysql2 into are
consolidated into the abstract_mysql base class.
Security Guide: removing Mass Assignment.

Since mass assignment doesn't exist anymore, we don't need to discuss it.

I checked with @fxn last night before making this change.
Merge pull request #8346 from sodabrew/patch-1

Add `variables:` to database.yml for mysql, mysql2, and postgresql adapters
Fix method assertion ensuring it will match "end" with the same indentation

Otherwise it was matching "end" lines from blocks within the method body,
making tests such as the migration ones fail.
Omit directories from gemspec.files for RubyGems 2 compat.

RG2 packager expects each spec.files path to be a file and bombs when it tries to tarball a dir.

May revert if rubygems/rubygems#413 is accepted.
use default_options= instead of default to avoid confusion
Make code statistics rake task handle new test locations properly

As of 2a68f68aead9fd65ecac8062ca8efc15f5bab418:

- Unit tests are now in test/models, instead of test/units
- Functional tests are now in test/controllers, instead of
  test/functional
- Helper tests are now in test/helpers, instead of test/units/helpers
- Mailer tests are now in test/mailers, instead of test/functional

Update the rake task for code statistics (`rake stats`) so that it
recognizes files in the above locations as tests, and accurately
calculates statistics such as "Test LOC" and "Code to Test Ratio."
Safely handle Rails apps that still have tests in the old locations.
Merge pull request #8466 from gclag/stats-handle-new-test-locations

Make rake task for code statistics handle new test locations properly
Globalize2 is only compatible with Rails 2 so link to Globalize3 instead
Revert "API reader should look elsewhere for helper instructions"

This reverts commit ba2d867b2961b5ef72aad353c2d647b04654cbe3.

Reason:
https://github.com/lifo/docrails/commit/ba2d867b2961b5ef72aad353c2d647b04654cbe3#commitcomment-2276670

[ci skip]
Include command to create mysql user

The guide mentions that the 'rails' user is needed, but doesn't
explicitly include the command to do so.
Merge pull request #8469 from kytrinyx/explicit-mysql-instructions

Include command to create mysql user

[ci skip]
Remove the spaces after the open bracket and before the close bracket.

All our generated code follow this rule
revise block on kindle guides [ci skip]
Add test case for scaffold_controller generator without attributes.

This is a test for 978c568a7bffe354180aaefa471092182fed1015
Use the references and belongs_id ids in the scaffold_controller
generator
Add quotes to Numeric Passwords to force string(Postgres)

If you have numeric password for your database, like below:
```yaml
development:
  adapter: mysql2
  encoding: utf8
  database: myblog_development
  pool: 5
  username: root
  password: 123456
```
you will get the following obscure error with unhelpful stack-trace

```shell
$ c
/home/gaurish/.rvm/gems/ruby-1.9.3-p286-perf/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in `connect': can't convert Fixnum into String (TypeError)
        from /home/gaurish/.rvm/gems/ruby-1.9.3-p286-perf/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in `initialize'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `new'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `mysql2_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:444:in `new_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:454:in `checkout_new_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:425:in `acquire_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:362:in `block in checkout'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in `checkout'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:271:in `block in connection'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:270:in `connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:545:in `retrieve_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_handling.rb:79:in `retrieve_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_handling.rb:53:in `connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/railtie.rb:153:in `block in <class:Railtie>'
        from /home/gaurish/code/repo/rails/railties/lib/rails/initializable.rb:30:in `instance_exec'
        from /home/gaurish/code/repo/rails/railties/lib/rails/initializable.rb:30:in `run'
        from /home/gaurish/code/repo/rails/railties/lib/rails/initializable.rb:55:in `block in run_initializers'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:150:in `block in tsort_each'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:183:in `block (2 levels) in each_strongly_connected_component'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:219:in `each_strongly_connected_component_from'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:182:in `block in each_strongly_connected_component'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:180:in `each'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:180:in `each_strongly_connected_component'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:148:in `tsort_each'
        from /home/gaurish/code/repo/rails/railties/lib/rails/initializable.rb:54:in `run_initializers'
        from /home/gaurish/code/repo/rails/railties/lib/rails/application.rb:216:in `initialize!'
        from /home/gaurish/code/repo/rails/railties/lib/rails/railtie/configurable.rb:30:in `method_missing'
        from /tmp/numericpass/config/environment.rb:5:in `<top (required)>'
        from /home/gaurish/code/repo/rails/railties/lib/rails/application.rb:190:in `require'
        from /home/gaurish/code/repo/rails/railties/lib/rails/application.rb:190:in `require_environment!'
        from /home/gaurish/code/repo/rails/railties/lib/rails/commands.rb:70:in `<top (required)>'
        from script/rails:6:in `require'
        from script/rails:6:in `<main>'
```
Looking [Can't convert fixnum to string during rake db:create](http://stackoverflow.com/questions/3765834/cant-convert-fixnum-to-string-during-rake-dbcreate), it seems lot of people have faced the same error. 

so adding a note informing about numeric passwords seems like a good idea
Add quotes to Numeric Passwords to force string(MySql)

If you have numeric password for your database, like below:
```yaml
development:
  adapter: mysql2
  encoding: utf8
  database: myblog_development
  pool: 5
  username: root
  password: 123456
```
you will get the following obscure error with unhelpful stack-trace

```shell
$ c
/home/gaurish/.rvm/gems/ruby-1.9.3-p286-perf/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in `connect': can't convert Fixnum into String (TypeError)
        from /home/gaurish/.rvm/gems/ruby-1.9.3-p286-perf/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in `initialize'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `new'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `mysql2_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:444:in `new_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:454:in `checkout_new_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:425:in `acquire_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:362:in `block in checkout'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in `checkout'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:271:in `block in connection'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:270:in `connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:545:in `retrieve_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_handling.rb:79:in `retrieve_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_handling.rb:53:in `connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/railtie.rb:153:in `block in <class:Railtie>'
        from /home/gaurish/code/repo/rails/railties/lib/rails/initializable.rb:30:in `instance_exec'
        from /home/gaurish/code/repo/rails/railties/lib/rails/initializable.rb:30:in `run'
        from /home/gaurish/code/repo/rails/railties/lib/rails/initializable.rb:55:in `block in run_initializers'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:150:in `block in tsort_each'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:183:in `block (2 levels) in each_strongly_connected_component'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:219:in `each_strongly_connected_component_from'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:182:in `block in each_strongly_connected_component'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:180:in `each'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:180:in `each_strongly_connected_component'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:148:in `tsort_each'
        from /home/gaurish/code/repo/rails/railties/lib/rails/initializable.rb:54:in `run_initializers'
        from /home/gaurish/code/repo/rails/railties/lib/rails/application.rb:216:in `initialize!'
        from /home/gaurish/code/repo/rails/railties/lib/rails/railtie/configurable.rb:30:in `method_missing'
        from /tmp/numericpass/config/environment.rb:5:in `<top (required)>'
        from /home/gaurish/code/repo/rails/railties/lib/rails/application.rb:190:in `require'
        from /home/gaurish/code/repo/rails/railties/lib/rails/application.rb:190:in `require_environment!'
        from /home/gaurish/code/repo/rails/railties/lib/rails/commands.rb:70:in `<top (required)>'
        from script/rails:6:in `require'
        from script/rails:6:in `<main>'
```
Looking [Can't convert fixnum to string during rake db:create](http://stackoverflow.com/questions/3765834/cant-convert-fixnum-to-string-during-rake-dbcreate), it seems lot of people have faced the same error.

so adding a note informing about numeric passwords seems like a good idea
Add quotes to Numeric Passwords to force string(jdbcpostgresql)

If you have numeric password for your database, like below:
```yaml
development:
  adapter: mysql2
  encoding: utf8
  database: myblog_development
  pool: 5
  username: root
  password: 123456
```


you will get the following obscure error with unhelpful stack-trace

```shell
/home/gaurish/.rvm/gems/ruby-1.9.3-p286-perf/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in `connect': can't convert Fixnum into String (TypeError)
        from /home/gaurish/.rvm/gems/ruby-1.9.3-p286-perf/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in `initialize'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `new'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `mysql2_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:444:in `new_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:454:in `checkout_new_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:425:in `acquire_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:362:in `block in checkout'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in `checkout'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:271:in `block in connection'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:270:in `connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:545:in `retrieve_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_handling.rb:79:in `retrieve_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_handling.rb:53:in `connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/railtie.rb:153:in `block in <class:Railtie>'
        from /home/gaurish/code/repo/rails/railties/lib/rails/initializable.rb:30:in `instance_exec'
        from /home/gaurish/code/repo/rails/railties/lib/rails/initializable.rb:30:in `run'
        from /home/gaurish/code/repo/rails/railties/lib/rails/initializable.rb:55:in `block in run_initializers'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:150:in `block in tsort_each'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:183:in `block (2 levels) in each_strongly_connected_component'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:219:in `each_strongly_connected_component_from'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:182:in `block in each_strongly_connected_component'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:180:in `each'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:180:in `each_strongly_connected_component'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:148:in `tsort_each'
        from /home/gaurish/code/repo/rails/railties/lib/rails/initializable.rb:54:in `run_initializers'
        from /home/gaurish/code/repo/rails/railties/lib/rails/application.rb:216:in `initialize!'
        from /home/gaurish/code/repo/rails/railties/lib/rails/railtie/configurable.rb:30:in `method_missing'
        from /tmp/numericpass/config/environment.rb:5:in `<top (required)>'
        from /home/gaurish/code/repo/rails/railties/lib/rails/application.rb:190:in `require'
        from /home/gaurish/code/repo/rails/railties/lib/rails/application.rb:190:in `require_environment!'
        from /home/gaurish/code/repo/rails/railties/lib/rails/commands.rb:70:in `<top (required)>'
        from script/rails:6:in `require'
        from script/rails:6:in `<main>'
```
Looking [Can't convert fixnum to string during rake db:create](http://stackoverflow.com/questions/3765834/cant-convert-fixnum-to-string-during-rake-dbcreate), it seems lot of people have faced the same error.

so adding a note informing about numeric passwords seems like a good idea
Add quotes to Numeric Passwords to force string(jdbcmysql)

If you have numeric password for your database, like below:
```yaml
development:
  adapter: mysql2
  encoding: utf8
  database: myblog_development
  pool: 5
  username: root
  password: 123456
```


you will get the following obscure error with unhelpful stack-trace

```shell
/home/gaurish/.rvm/gems/ruby-1.9.3-p286-perf/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in `connect': can't convert Fixnum into String (TypeError)
        from /home/gaurish/.rvm/gems/ruby-1.9.3-p286-perf/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in `initialize'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `new'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `mysql2_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:444:in `new_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:454:in `checkout_new_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:425:in `acquire_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:362:in `block in checkout'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in `checkout'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:271:in `block in connection'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:270:in `connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:545:in `retrieve_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_handling.rb:79:in `retrieve_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_handling.rb:53:in `connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/railtie.rb:153:in `block in <class:Railtie>'
        from /home/gaurish/code/repo/rails/railties/lib/rails/initializable.rb:30:in `instance_exec'
        from /home/gaurish/code/repo/rails/railties/lib/rails/initializable.rb:30:in `run'
        from /home/gaurish/code/repo/rails/railties/lib/rails/initializable.rb:55:in `block in run_initializers'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:150:in `block in tsort_each'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:183:in `block (2 levels) in each_strongly_connected_component'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:219:in `each_strongly_connected_component_from'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:182:in `block in each_strongly_connected_component'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:180:in `each'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:180:in `each_strongly_connected_component'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:148:in `tsort_each'
        from /home/gaurish/code/repo/rails/railties/lib/rails/initializable.rb:54:in `run_initializers'
        from /home/gaurish/code/repo/rails/railties/lib/rails/application.rb:216:in `initialize!'
        from /home/gaurish/code/repo/rails/railties/lib/rails/railtie/configurable.rb:30:in `method_missing'
        from /tmp/numericpass/config/environment.rb:5:in `<top (required)>'
        from /home/gaurish/code/repo/rails/railties/lib/rails/application.rb:190:in `require'
        from /home/gaurish/code/repo/rails/railties/lib/rails/application.rb:190:in `require_environment!'
        from /home/gaurish/code/repo/rails/railties/lib/rails/commands.rb:70:in `<top (required)>'
        from script/rails:6:in `require'
        from script/rails:6:in `<main>'
```
Looking [Can't convert fixnum to string during rake db:create](http://stackoverflow.com/questions/3765834/cant-convert-fixnum-to-string-during-rake-dbcreate), it seems lot of people have faced the same error.

so adding a note informing about numeric passwords seems like a good idea