Merge pull request #8402 from senny/8376_descriptive_error_message_for_partial_layout_true

More descriptive error when rendering a partial with `:layout => true`
Conflicts:
	actionpack/CHANGELOG.md
	actionpack/lib/action_view/renderer/partial_renderer.rb
handled respond_to? with private methods
Merge pull request #8405 from hsbt/fix-respond-initialize-dup

Handle respond_to? with private methods
Override <%== to always behave as literal text rather than toggling based on whether escaping is enabled. Fixes that existing plaintext email templates using <%== unexpectedly flipped to *escaping* HTML when #8235 was merged.

Conflicts:
	actionpack/test/template/template_test.rb
Use 1.8 hash style
Skip ruby-prof in Gemfile for Ruby 2.0
Use send in Time marshal extensions since the methods are now private

See https://github.com/ruby/ruby/commit/9c1b3161f20162dc1682d758c0e4d2fc3a74745e

All Active Support tests pass in 2.0.0preview2 after this change.
Closes #8409
Merge pull request #4942 from bogdan/pluck_joins

AR::Relation#pluck: improve to work with joins

Conflicts:
	activerecord/lib/active_record/relation/calculations.rb
	activerecord/test/cases/calculations_test.rb
Bump mailer to quiet the stdout log messages

Conflicts:
	actionmailer/actionmailer.gemspec
backport #8403, no intermediate AR objects when eager loading.

Closes #3313

Conflicts:

	activerecord/CHANGELOG.md
	activerecord/test/models/developer.rb
Merge pull request #8413 from senny/8403_backport

backport #8403, no intermediate AR objects when eager loading.
Make output of distance_of_time_in_words consistent

This commit fixes the output of distance_of_time_in_words when
using integer or duration arguments. Previously a distance of
more than 30 seconds would be output as 'Less than 1 minute'
when using integer arguments and '1 minute' when using two
Time instances more than 30 seconds apart.

Cherry picked from 5fdd4cd9e47be972f146a8a17a74c8f4700e2ac0
Make distance_of_time_in_words work with DateTime offsets

Because DateTime#to_time returns self when it has a non-zero offset
and subtracting two DateTime instances returns a Rational then the
distance_of_time_in_words methods outputs an incorrect value.

This is fixed in master because we can rely on Ruby 1.9.3's
implementation of to_time but it can't be fixed on Ruby 1.8.7 as
there is no way to map the DateTime to a Time with a non-zero offset.

We can workaround the problem by casting to Float before doing
the subtraction in the distance_of_time_in_words method.

Closes #8390
Merge pull request #8417 from kennyj/fix_8414

Fix #8414. Performance problem with postgresql adapter primary_key function.
Conflicts:
	activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb
Unscope update_column(s) query to ignore default scope

When applying default_scope to a class with a where clause, using
update_column(s) could generate a query that would not properly update
the record due to the where clause from the default_scope being applied
to the update query.

    class User < ActiveRecord::Base
      default_scope where(active: true)
    end

    user = User.first
    user.active = false
    user.save!

    user.update_column(:active, true) # => false

In this situation we want to skip the default_scope clause and just
update the record based on the primary key. With this change:

    user.update_column(:active, true) # => true

Backport of #8436 fix.

Conflicts:
	activerecord/CHANGELOG.md
	activerecord/lib/active_record/persistence.rb
	activerecord/test/cases/persistence_test.rb
Fix a fixtures test case with table prefix/suffix

Make sure the table name of a model is reset in a test case after assigning ActiveRecord::Base.table_name_prefix and ActiveRecord::Base.table_name_suffix.
Use the correct table name from fixture

Fixed a bug in fixtures.rb where the table name was incorrectly inferred from the fixture path which was ambiguously called "table_name" but was also used as the fixture name.
Now, the "correct" table name is taken from an instance variable.
Test fixtures with custom model and table names

Test using fixtures with random names and model names, that is not following naming conventions but using set_fixture_class instead.

It is expected that the table name be defined in the model, but this is not explicitly tested here.  This will need to be fixed.
"foo/bar" instead of "foo_bar" keys for fixtures

This solves an issue with set_fixture_class class method caused by create_fixtures method's overwriting passed to it fixture model classes, when the fixtures are "namespased": foo/bar or admin/users.

The idea is to use "foo/bar" string as the name and identifier of a
fixture file bar in directory foo.  The model class of the fixture is either set with set_fixture_class method, or otherwise inferred from its name using camelize method.

Also a bug is fixed in lines 487-489 when the table names were guessed by substitution from the fixture file names, ambiguously called  table_names, instead of being taken from fixture attributes.  Now they are taken from attributes.

Add a method `ActiveRecord::Fixtures.default_fixture_model_name` instead of a ":nodoc:" class method `ActiveRecord::Fixtures.find_table_name`, which does not correspond to its name.  The old method name is aliased to the new one, and is deprecated in master in favour of the new one.
Test case: fixture table name is defined in model