def write_to(filename, options = {})
unless options.key?(:compress)
options[:compress] = File.extname(filename) == '.gz' && File.extname(logical_path) != '.gz'
end
FileUtils.mkdir_p File.dirname(filename)
File.open("#{filename}+", 'wb') do |f|
if options[:compress]
gz = Zlib::GzipWriter.new(f, Zlib::BEST_COMPRESSION)
gz.mtime = mtime.to_i
gz.write to_s
gz.close
else
f.write to_s
end
end
FileUtils.mv("#{filename}+", filename)
File.utime(mtime, mtime, filename)
nil
ensure
FileUtils.rm("#{filename}+") if File.exist?("#{filename}+")
end