# File lib/erubis/engine.rb, line 48 def self.load_file(filename, properties={}) cachename = properties[:cachename] || (filename + '.cache') properties[:filename] = filename if test(?f, cachename) && File.mtime(filename) <= 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) File.open(cachename, 'wb') do |f| f.flock(File::LOCK_EX) f.write(engine.src) f.flush() end end engine.src.untaint # ok? return engine end