Merge pull request #16170 from Bo98/atomic-homebrew_gem_groups

utils/gems: make `.homebrew_gem_groups` writing atomic
This commit is contained in:
Bo Anderson 2023-10-30 21:20:10 +00:00 committed by GitHub
commit 691f7f5901
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -191,7 +191,16 @@ module Homebrew
end end
def write_user_gem_groups(groups) 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 end
def forget_user_gem_groups! def forget_user_gem_groups!