diff options
-rw-r--r-- | lib/erubis/engine.rb | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/lib/erubis/engine.rb b/lib/erubis/engine.rb index 8ada39c..0ef9a47 100644 --- a/lib/erubis/engine.rb +++ b/lib/erubis/engine.rb @@ -54,11 +54,9 @@ module Erubis 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 + tmpname = cachename + rand().to_s[1,8] + File.open(tmpname, 'wb') {|f| f.write(engine.src) } + File.rename(tmpname, cachename) end engine.src.untaint # ok? return engine |