# 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