File: freeze.rb [activesupport-3.2.22 Documentation]

Last Modified
  2015-11-08 22:25:50 +0000
Requires
  - date

## Description

Date memoizes some instance methods using metaprogramming to wrap the methods with one that caches the result in an instance variable.

If a Date is frozen but the memoized method hasn’t been called, the first call will result in a frozen object error since the memo instance variable is uninitialized.

Work around by eagerly memoizing before the first freeze.

Ruby 1.9 uses a preinitialized instance variable so it’s unaffected. This hack is as close as we can get to feature detection: