summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThe Bundler Bot <bot@bundler.io>2018-04-15 01:43:08 +0000
committerColby Swandale <me@colby.fyi>2018-04-20 10:28:36 +1000
commit27626e791546c9f33f81abb524f0a8b76e10f036 (patch)
tree16974dd07db51a4d194138d5661760fce7ebd942
parent42068499ac247317fe85daae1f148593a71a1701 (diff)
downloadbundler-27626e791546c9f33f81abb524f0a8b76e10f036.tar.gz
Auto merge of #6482 - grosser:grosser/homeless, r=colby-swandale
Do not blow up when installing on a readonly filesystem without a hom… …e directory fixes https://github.com/bundler/bundler/issues/6461 ``` docker run --read-only ruby ruby -r bundler/cli -e "puts Bundler::VERSION; Bundler::CLI.start(['exec', 'ruby', '-v'], :debug => true)" /usr/local/lib/ruby/site_ruby/2.5.0/bundler.rb:193:in `rescue in tmp_home_path': `/root` is not writable. (Bundler::GenericSystemCallError) Bundler also failed to create a temporary home directory at `/tmp/bundler/home': There was an error accessing `/tmp/bundler/home`. The underlying system error is Errno::EROFS: Read-only file system @ dir_s_mkdir - /tmp/bundler from /usr/local/lib/ruby/site_ruby/2.5.0/bundler.rb:181:in `tmp_home_path' from /usr/local/lib/ruby/site_ruby/2.5.0/bundler.rb:172:in `user_home' from /usr/local/lib/ruby/site_ruby/2.5.0/bundler.rb:197:in `user_bundle_path' from /usr/local/lib/ruby/site_ruby/2.5.0/bundler/plugin.rb:99:in `global_root' from /usr/local/lib/ruby/site_ruby/2.5.0/bundler/plugin/index.rb:73:in `global_index_file' from /usr/local/lib/ruby/site_ruby/2.5.0/bundler/plugin/index.rb:32:in `initialize' from /usr/local/lib/ruby/site_ruby/2.5.0/bundler/plugin.rb:78:in `new' ``` @segiddins (cherry picked from commit 6ce1eea14bc2d9917ea67d0103e0a7f15a0b62ec)
-rw-r--r--lib/bundler/plugin/index.rb7
-rw-r--r--spec/bundler/plugin/index_spec.rb8
2 files changed, 14 insertions, 1 deletions
diff --git a/lib/bundler/plugin/index.rb b/lib/bundler/plugin/index.rb
index 8dde072f16..770a98de3a 100644
--- a/lib/bundler/plugin/index.rb
+++ b/lib/bundler/plugin/index.rb
@@ -29,7 +29,12 @@ module Bundler
@hooks = {}
@load_paths = {}
- load_index(global_index_file, true)
+ begin
+ load_index(global_index_file, true)
+ rescue GenericSystemCallError
+ # no need to fail when on a read-only FS, for example
+ nil
+ end
load_index(local_index_file) if SharedHelpers.in_bundle?
end
diff --git a/spec/bundler/plugin/index_spec.rb b/spec/bundler/plugin/index_spec.rb
index 163b563b2a..ca3476ea2a 100644
--- a/spec/bundler/plugin/index_spec.rb
+++ b/spec/bundler/plugin/index_spec.rb
@@ -175,4 +175,12 @@ RSpec.describe Bundler::Plugin::Index do
include_examples "it cleans up"
end
end
+
+ describe "readonly disk without home" do
+ it "ignores being unable to create temp home dir" do
+ expect_any_instance_of(Bundler::Plugin::Index).to receive(:global_index_file).
+ and_raise(Bundler::GenericSystemCallError.new("foo", "bar"))
+ Bundler::Plugin::Index.new
+ end
+ end
end