cache (Merb::Cache::FileStore)

    # File lib/merb-cache/cache-store/file.rb, line 64
      def cache(_controller, key, from_now = nil, &block)
        cache_file = @config[:cache_directory] / "#{key}.cache"
        _cache_hit = _data = _expire = nil

        if File.file?(cache_file)
          _data, _expire = Marshal.load(cache_read(cache_file))
          _cache_hit = true if _expire.nil? || Time.now < _expire
        end
        unless _cache_hit
          cache_directory = File.dirname(cache_file)
          FileUtils.mkdir_p(cache_directory)
          _expire = from_now ? from_now.minutes.from_now : nil
          _data = _controller.send(:capture, &block)
          cache_write(cache_file, Marshal.dump([_data, _expire]))
        end
        _controller.send(:concat, _data, block.binding)
        true
      end