module Opal::Cache

Public Instance Methods

digest(string) click to toggle source
# File lib/opal/cache.rb, line 61
def digest(string)
  ::Digest::SHA256.hexdigest(string)[-32..-1].to_i(16).to_s(36)
end
fetch(cache, key) { || ... } click to toggle source
# File lib/opal/cache.rb, line 33
def fetch(cache, key, &block)
  # Extension to the Sprockets API of Cache, if a cache responds
  # to #fetch, then we call it instead of using #get and #set.
  return cache.fetch(key, &block) if cache.respond_to? :fetch

  key = digest(key.join('/')) + '-' + runtime_key

  data = cache.get(key)

  data || begin
            compiler = yield
            cache.set(key, compiler) unless compiler.dynamic_cache_result
            compiler
          end
end
runtime_key() click to toggle source
# File lib/opal/cache.rb, line 49
def runtime_key
  @runtime_key ||= begin
    files = Opal.dependent_files

    digest [
      files.sort.map { |f| "#{f}:#{File.size(f)}:#{File.mtime(f).to_f}" },
      RUBY_VERSION,
      RUBY_PATCHLEVEL
    ].join('/')
  end
end