[前][次][番号順一覧][スレッド一覧]

ruby-changes:72000

From: David <ko1@a...>
Date: Sun, 29 May 2022 22:19:49 +0900 (JST)
Subject: [ruby-changes:72000] 373dabe00a (master): [rubygems/rubygems] Ignore `Errno::EPERM` errors when creating `bundler.lock`

https://git.ruby-lang.org/ruby.git/commit/?id=373dabe00a

From 373dabe00a71214e12702ff1ccda88f865b504c4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@r...>
Date: Sun, 29 May 2022 13:51:13 +0200
Subject: [rubygems/rubygems] Ignore `Errno::EPERM` errors when creating
 `bundler.lock`

This kind of error can happen when setting `GEM_HOME` to a path
under MacOS System Integrity Protection.

We ignore the error. Any permission issues should be better handled
further down the line.

https://github.com/rubygems/rubygems/commit/174cb66863
---
 lib/bundler/process_lock.rb               |  2 +-
 spec/bundler/install/process_lock_spec.rb | 11 +++++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/lib/bundler/process_lock.rb b/lib/bundler/process_lock.rb
index a5cc614e20..af7cd8a05f 100644
--- a/lib/bundler/process_lock.rb
+++ b/lib/bundler/process_lock.rb
@@ -12,7 +12,7 @@ module Bundler https://github.com/ruby/ruby/blob/trunk/lib/bundler/process_lock.rb#L12
         yield
         f.flock(File::LOCK_UN)
       end
-    rescue Errno::EACCES, Errno::ENOLCK, Errno::ENOTSUP
+    rescue Errno::EACCES, Errno::ENOLCK, Errno::ENOTSUP, Errno::EPERM
       # In the case the user does not have access to
       # create the lock file or is using NFS where
       # locks are not available we skip locking.
diff --git a/spec/bundler/install/process_lock_spec.rb b/spec/bundler/install/process_lock_spec.rb
index dac0d34bc4..e2b8d20607 100644
--- a/spec/bundler/install/process_lock_spec.rb
+++ b/spec/bundler/install/process_lock_spec.rb
@@ -31,5 +31,16 @@ RSpec.describe "process lock spec" do https://github.com/ruby/ruby/blob/trunk/spec/bundler/install/process_lock_spec.rb#L31
         expect(processed).to eq true
       end
     end
+
+    context "when creating a lock raises Errno::EPERM" do
+      before { allow(File).to receive(:open).and_raise(Errno::EPERM) }
+
+      it "skips creating the lock file and yields" do
+        processed = false
+        Bundler::ProcessLock.lock(default_bundle_path) { processed = true }
+
+        expect(processed).to eq true
+      end
+    end
   end
 end
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]