Sha256: 537d42fd3d5fc9025edac30e3072c20fdc23617348a786b7604a353150b10ff0

Contents?: true

Size: 980 Bytes

Versions: 24

Compression:

Stored size: 980 Bytes

Contents

module Mongoid #:nodoc
  module Memoization

    # Handles cases when accessing an association that should be memoized in
    # the Mongoid specific manner. Does not memoize nil values though
    def memoized(name, &block)
      var = "@#{name}"
      if instance_variable_defined?(var)
        return instance_variable_get(var)
      end
      value = yield
      instance_variable_set(var, value) if value
    end

    # Removes an memozied association if it exists
    def unmemoize(name)
      var = "@#{name}"
      remove_instance_variable(var) if instance_variable_defined?(var)
    end

    # Mongoid specific behavior is to remove the memoized object when setting
    # the association, or if it wasn't previously memoized it will get set.
    def reset(name, &block)
      var = "@#{name}"
      value = yield
      if instance_variable_defined?(var)
        remove_instance_variable(var)
      else
        instance_variable_set(var, value)
      end
    end
  end
end

Version data entries

24 entries across 24 versions & 5 rubygems

Version Path
mongoid-1.9.5 lib/mongoid/memoization.rb
mongoid-with-auth-1.9.4 lib/mongoid/memoization.rb
mongoid-rails2-1.9.4 lib/mongoid/memoization.rb
mongoid-rails2-1.9.3 lib/mongoid/memoization.rb
mongoid-2.0.0.beta.20 lib/mongoid/memoization.rb
mongoid-2.0.0.beta.19 lib/mongoid/memoization.rb
mongoid-1.9.2 lib/mongoid/memoization.rb
sskirby-mongoid-1.9.1 lib/mongoid/memoization.rb
mongoid-2.0.0.beta.18 lib/mongoid/memoization.rb
mongoid-2.0.0.beta.17 lib/mongoid/memoization.rb
mongoid-2.0.0.beta.16 lib/mongoid/memoization.rb
mongoid-2.0.0.beta.15 lib/mongoid/memoization.rb
mongoid-2.0.0.beta.14 lib/mongoid/memoization.rb
mongoid-2.0.0.beta.13 lib/mongoid/memoization.rb
mongoid-2.0.0.beta.11 lib/mongoid/memoization.rb
mongoid-2.0.0.beta.10 lib/mongoid/memoization.rb
mongoid-2.0.0.beta.7 lib/mongoid/memoization.rb
mongoid-2.0.0.beta.8 lib/mongoid/memoization.rb
mongoid-2.0.0.beta.9 lib/mongoid/memoization.rb
mongoid-2.0.0.beta.12 lib/mongoid/memoization.rb