Flowdock
method

compute_and_store_digest

Importance_0
v4.0.2 - Show latest stable - 0 notes - Class: Digestor
compute_and_store_digest(cache_key, name, format, finder, options) private

No documentation

This method has no description. You can help the Ruby on Rails community by adding new notes.

Hide source
# File actionpack/lib/action_view/digestor.rb, line 24
      def compute_and_store_digest(cache_key, name, format, finder, options) # called under @@digest_monitor lock
        klass = if options[:partial] || name.include?("/_")
          # Prevent re-entry or else recursive templates will blow the stack.
          # There is no need to worry about other threads seeing the +false+ value,
          # as they will then have to wait for this thread to let go of the @@digest_monitor lock.
          pre_stored = @@cache.put_if_absent(cache_key, false).nil? # put_if_absent returns nil on insertion
          PartialDigestor
        else
          Digestor
        end

        digest = klass.new(name, format, finder, options).digest
        # Store the actual digest if config.cache_template_loading is true
        @@cache[cache_key] = stored_digest = digest if ActionView::Resolver.caching?
        digest
      ensure
        # something went wrong or ActionView::Resolver.caching? is false, make sure not to corrupt the @@cache
        @@cache.delete_pair(cache_key, false) if pre_stored && !stored_digest 
      end
Register or log in to add new notes.