From a339b912c0b90ab3e3a8582f530462943a77ed2f Mon Sep 17 00:00:00 2001 From: Bo Anderson Date: Mon, 30 Oct 2023 20:26:08 +0000 Subject: [PATCH] utils/gems: make .homebrew_gem_groups writing atomic --- Library/Homebrew/utils/gems.rb | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/utils/gems.rb b/Library/Homebrew/utils/gems.rb index ef06986116..b9a49c2a06 100644 --- a/Library/Homebrew/utils/gems.rb +++ b/Library/Homebrew/utils/gems.rb @@ -191,7 +191,16 @@ module Homebrew end def write_user_gem_groups(groups) - GEM_GROUPS_FILE.write(groups.join("\n")) + # Write the file atomically, in case we're working parallel + require "tempfile" + tmpfile = Tempfile.new([GEM_GROUPS_FILE.basename.to_s, "~"], GEM_GROUPS_FILE.dirname) + begin + tmpfile.write(groups.join("\n")) + tmpfile.close + File.rename(tmpfile.path.to_s, GEM_GROUPS_FILE) + ensure + tmpfile.unlink + end end def forget_user_gem_groups!