Fix javascript_include_tag when no js runtime is available

In a production environment where the assets have been precompiled, we
don't want an assets compile step to happen on the application server at
all. To ensure this, a js runtime may not be available on the app
servers. In this environment, pages using javascript_include_tag for
assets with non-standard or chained extensions were throwing 500 errors.
For instance, `javascript_include_tag('jquery.min')` would blow up.

Sprockets was attempting to build the assets being included during the
rewrite_extension step (responsible for appending a '.js' extension to
assets being included by the basename rather than a fully qualified
name). This was happening as a step to resolve #6310, which required
checking for the presence of an asset with a non-standard extension
before appending the extension.

We can check for the presence of an asset without invoking the asset
build step by using Sprockets' resolve method, which will search for the
base file without building it (and is the method that find_asset uses
internally to get the path to the asset before attempting to build it).

When rewriting the extension on an asset, these are the steps:
- If the source does not have an extension, assume that the default
  extension is desired and append it.
- If there is an extension and it doesn't match the default extension,
  check to see if a file with the precise name specified exists amongst
  the assets; if it is present, do not append the default extension.
  (This is the step that resolves #6310).
Update changelogs with release date [ci skip]
Fixes issue where duplicate assets can be required with sprockets.

- addresses the problem by calling flatten on asset array before calling uniq.
- adds note to CHANGELOG.
Merge pull request #8735 from jejacks0n/duplicate_asset_fix

Ensure assets aren't duplicated when using sprockets require.
Merge pull request #8756 from causes/js_include_tag_fix

Fix javascript_include_tag when no js runtime is available
Reorder AP changelog and remove duplicated entry [ci skip]

Duplicated entry added in 002dfba66490d289bac897d1ba886310a672e779.
Fix JSON params parsing regression for non-object JSON content.

Backports #8855.
Merge pull request #8888 from dylanahsmith/3-2-parse-non-object-json-params

3-2-stable: Fix JSON params parsing regression for non-object JSON content.
Revert "Merge pull request #7661 from ernie/build-join-records-on-unsaved-hmt"

This reverts commit ee439895759b38431ad025f3c234831f30dadcdb.

It would appear that #7661 had unintended consequences to the API. Until
we can sort those out, this should not be in 3.2.x, and wait for 4.0.0.
Merge pull request #8895 from ernie/revert-hmt-on-unsaved-in-3-2

Revert hm:t on unsaved collection for 3.2
Remove unnecessary caching of ParameterFilter
Merge pull request #8907 from rubys/master

Fix regression introduced in pull 8812
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
Fixture's table name be defined in the model

Made the fixture's table name be taken from its model class whenever this class responds to table_name, instead of inferring it sometimes from the fixture's pass.

The previous behavior seemed buggy because it depended on whether the model class was passed as a constant or as a name string.

Improved Fixtures#initialize.
Fixes for TestFixtures::setup_fixture_accessors

Renamed "fixture_name" to "accessor_name" and made fixture names in the form "admin/users" be used as the key for the hashes @fixture_cache and @loaded_fixtures.

Previously the variable "fixture_name" here was getting a value of the form "admin_user", and this value was then used as the hash key.