Use `Base.strict_decode64` instead of `Base.decode64` just as we do in encoding;

Also reduce extra object allocation by creating string directly instead of join on Array
Fix AR#method_missing re-dispatching into overwritten attribute methods.

This was happening when a `super` call in an overwritten attribute method
was triggering a method_missing fallback, because attribute methods
haven't been generated yet.

  class Topic < ActiveRecord::Base
    def title
      # `super` would re-invoke this method if define_attribute_methods
      # hasn't been called yet resulting in double '!' appending
      super + '!'
    end
  end
Change deep_munge call to avoid deprecation warning
Rename variable that holds whether or not the class should validate a float number
Refactor to avoid earlier returns
Stop using local variables everywhere, make use of the reader
Avoid a hash creation since defaults is a new hash already
No need for #tap
Remove useless empty string
Make both conversion methods work similarly

The conversion without area code already changed the passed number in
place, so change the other method to do the same.
Change delimiter check order: first check if it is present

This reads a lot better, and we won't need to try start_with? for blank
delimiters.

Also rename method name to read better.
Remove earlier return in favor of conditional
optimize string literals in erb templates
Install Spring preloader when generating new applications
Action Pack Variants

By default, variants in the templates will be picked up if a variant is set
and there's a match. The format will be:

  app/views/projects/show.html.erb
  app/views/projects/show.html+tablet.erb
  app/views/projects/show.html+phone.erb

If request.variant = :tablet is set, we'll automatically be rendering the
html+tablet template.

In the controller, we can also tailer to the variants with this syntax:

  class ProjectsController < ActionController::Base
    def show
      respond_to do |format|
        format.html do |html|
          @stars = @project.stars

          html.tablet { @notifications = @project.notifications }
          html.phone  { @chat_heads    = @project.chat_heads }
        end

        format.js
        format.atom
      end
    end
  end

The variant itself is nil by default, but can be set in before filters, like
so:

  class ApplicationController < ActionController::Base
    before_action do
      if request.user_agent =~ /iPad/
        request.variant = :tablet
      end
    end
  end

This is modeled loosely on custom mime types, but it's specifically not
intended to be used together. If you're going to make a custom mime type,
you don't need a variant. Variants are for variations on a single mime
types.
Add variants to release notes
Merge pull request #12977 from strzalek/action-pack-variants

Action Pack Variants
Add nodoc to added VariantFilter class
Backfilled CHANGELOG for AS::JSON::Variable removal (6f3e01e8) [ci skip]
Added JSON release notes [ci skip]