[ci skip] Add explanation on Rack::Sendfile and fix serve static files setting.
Just change ENV and restore it afterwards.

Stubbing ENV[] is not safe outside MRI. At some point after the
stubbing has occurred a backtrace is printed to the ActiveSupport
warning log: there Rubinius accesses ENV['RBX_NOCOLOR'] to determine
if it should print the backtrace with colors or not, causing the
stub to fail. Other implementations might access ENV in a different
way too, we just can't predict it.
The only thing we can do here is to actually set the ENV with what
we want and restore it afterwards.
this code is never used, remove it
remove more dead code

We control the inputs to `construct`, so the wrong type shouldn't be
passed in ever.
extract the string handling part to a method.

We know the structure passed in to the `construct` method will be a
hash, so we don't need to test it all the time.  The key value will be a
symbol or string, so handle it with the special method
Assert presence of "frozen" in error message, not the full MRI message.

Related to all the other issues regarding message independent assertions
to make Rails compatible with other Ruby implementations other than MRI.

The best way here would be to have a specific error raised when modifying
frozen objects, like FrozenObjectError or something. But since Ruby
doesn't provide such a thing, we must limit the assertion to the lowest
common denominator, which is word "frozen".
Allow methods arity below -1 in assert_responds.

Every method from MRI's core classes is written in C. This means
Method#arity always returns -1 for methods with a variable number of
arguments. This is not the case with Rubinius, where, for example
Array#slice! is implemented in Ruby and has arity -2, since is
defined as def slice!(start, length = undefined)
Fixes #11773 when using includes combined with select, the select statement was overwritten.
Call `rails plugin new yaffle` in the plugins guide. [ci skip]

It's confusing to not explicitly do this step.
Merge pull request #12463 from ulyssecarion/master

Call `rails plugin new yaffle` in the plugins guide. [ci skip]
typecast records returned from the db rather than to_sing everything
@associations can never have an array, so remove the dead code
decouple JoinAssociation from JoinDependency
hide join_parts internals from other classes
adding load_path to include active_model in the load path of example
similar to activerecord/examples/simple.rb
build association tree thing on demand.

`instantiate` is only called once, so there is no reason to cache the
data structure on the instance and mutate itself.
don't access the reflections hash

The reflections hash is supposed to be private, so let's use the API.
this method is only ever called with a reflection

Stop typechecking the parameter.  We know the type.
we know the keys are scalars, so avoid some typechecking
transform the association input so we can avoid type checks later.

We should consider moving the input munging outside the class
instantiation