load_file (Erubis::Engine)

    # File lib/erubis/engine.rb, line 48
        def self.load_file(filename, properties={})
          cachename = properties[:cachename] || (filename + '.cache')
          properties[:filename] = filename
          timestamp = File.mtime(filename)
          if test(?f, cachename) && timestamp == File.mtime(cachename)
            engine = self.new(nil, properties)
            engine.src = File.read(cachename)
          else
            input = File.open(filename, 'rb') {|f| f.read }
            engine = self.new(input, properties)
            tmpname = cachename + rand().to_s[1,8]
            File.open(tmpname, 'wb') {|f| f.write(engine.src) }
            File.rename(tmpname, cachename)
            File.utime(timestamp, timestamp, cachename)
          end
          engine.src.untaint   # ok?
          return engine
        end