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
Extract ActiveSupport::NumberHelper methods to classes

Due to the overall complexity of each method individually as well as the
global shared private module methods, this pulls each helper into it's
own converter class inheriting from a generic `NumberBuilder` class.

* The `NumberBuilder` class contains the private methods needed for each helper
method an eliminates the need for special definition of specialized private
module methods.
* The `ActiveSupport::NumberHelper::DEFAULTS` constant has been moved
into the `NumberBuilder` class because the `NumberBuilder` is the only
class which needs access to it.
* For each of the builders, the `#convert` method is broken down to
smaller parts and extracted into private methods for clarity of purpose.
* Most of the mutation that once was necessary has now been eliminated.
* Several of the mathematical operations for percentage, delimited, and
rounded have been moved into private methods to ease readability and
clarity.
* Internationalization is still a bit crufty, and definitely could be
improved, but it is functional and a bit easier to follow.

The following helpers were extracted into their respective classes.

* `#number_to_percentage` -> `NumberToPercentageConverter`
* `#number_to_delimited` -> `NumberToDelimitedConverter`
* `#number_to_phone` -> `NumberToPhoneConverter`
* `#number_to_currency` -> `NumberToCurrencyConverter`
* `#number_to_rounded` -> `NumberToRoundedConverter`
* `#number_to_human_size` -> `NumberToHumanSizeConverter`
* `#number_to_human` -> `NumberToHumanConverter`
Use TS::Cache instead plain Hash in TimeZone.

Plain ruby Hashes are not thread safe.
Unify AS::TZ's lazy init maps.

There's no point in having 2 almost identical (@lazy_zones_map and @zones_map) lazy initialized TZ instance caches.
Remove AS::TZ.lookup(name).

The method doesn't really make much sense (find_tzinfo will succeed for any imput provided).
Add regression test for IpSpoofAttackError issue

See #10780
Move Rack::Cache after AD::Static in the stack
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
the oracle adapter lives in a gem. Tests should live there as well.
Added some failing tests where the JSON encoder is not resolving as_json correctly
Expanded coverage on JSON encoding
Removed support for encoding BigDecimal as a JSON number

This is because the new encoder will no longer support encode_json.
Therefore our only choice is to return `to_i` or `to_s` in
`BigDecimal#as_json`. Since casting a BigDecimal to an integer is
most likely a lossy operation, we chose to encode it as a string.

Support for encoding BigDecimal as a string will return via the
`activesupport-json_encoder` gem.
Removed the Ruby encoder and switched to using the JSON gem

Got all the tests passing again.

Support for `encode_json` has been removed (and consequently the
ability to encode `BigDecimal`s as numbers, as mentioned in the
previous commit). Install the `activesupport-json_encoder` gem
to get it back.
Make the JSON encoder pluggable
Process::Status should get a :nodoc: [ci skip]
Be explicit and use the actual unicode sequence
More typo fixes
Merge pull request #12183 from chancancode/json_encoder_refactor

JSON encoder refactor
Merge pull request #13061 from laurocaetano/fix-uniqueness-validation-for-aliased-attribute

Fix bug when validating the uniqueness of an aliased attribute.
Conflicts:
	activerecord/CHANGELOG.md
Link for "New Post" is added in Getting Started guide [ci skip]

- Earlier(line number 862) it is said to add <%= link_to 'New post', new_post_path %> on posts index page before table tag. But when posts index page html is shown, "New Post" link is missing.
So aaded "New Post" link in this commit