Path: | lib/active_support/core_ext/date/freeze.rb |
Last Update: | Fri Sep 23 15:19:07 -0400 2011 |
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 freezing.
Ruby 1.9 uses a preinitialized instance variable so it‘s unaffected. This hack is as close as we can get to feature detection: