    # File lib/active_support/core_ext/file/atomic.rb, line 18
            def atomic_write(file_name, temp_dir = Dir.tmpdir)
              require 'tempfile' unless defined?(Tempfile)

              temp_file = Tempfile.new(basename(file_name), temp_dir)
              yield temp_file
              temp_file.close

              begin
                # Get original file permissions
                old_stat = stat(file_name)
              rescue Errno::ENOENT
                # No old permissions, write a temp file to determine the defaults
                check_name = join(dirname(file_name), ".permissions_check.#{Thread.current.object_id}.#{Process.pid}.#{rand(1000000)}")
                open(check_name, "w") { }
                old_stat = stat(check_name)
                unlink(check_name)
              end

              # Overwrite original file with temp file
              rename(temp_file.path, file_name)

              # Set correct permissions on new file
              chown(old_stat.uid, old_stat.gid, file_name)
              chmod(old_stat.mode, file_name)
            end