From de0b93f912f014155423ed9a679dcd99c40f2622 Mon Sep 17 00:00:00 2001 From: Maxim Belkin Date: Tue, 7 Nov 2017 14:18:25 -0600 Subject: pathname: improvements, cleanups, and new methods - atomic_write: close file before renaming to prevent error: 'Device or resource busy' - ensure_writable: preserve executable bit - new elf? and dynamic? methods --- Library/Homebrew/extend/pathname.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'Library/Homebrew/extend/pathname.rb') diff --git a/Library/Homebrew/extend/pathname.rb b/Library/Homebrew/extend/pathname.rb index b4c7ca959..82cf10be0 100644 --- a/Library/Homebrew/extend/pathname.rb +++ b/Library/Homebrew/extend/pathname.rb @@ -189,6 +189,9 @@ class Pathname rescue Errno::EPERM # rubocop:disable Lint/HandleExceptions end + # Close the file before renaming to prevent the error: Device or resource busy + # Affects primarily NFS. + tf.close File.rename(tf.path, self) ensure tf.close! @@ -376,7 +379,7 @@ class Pathname saved_perms = nil unless writable_real? saved_perms = stat.mode - chmod 0644 + FileUtils.chmod "u+rw", to_path end yield ensure @@ -469,6 +472,8 @@ class Pathname end end +require "extend/os/pathname" + # @private module ObserverPathnameExtension class << self -- cgit v1.2.3