Skip to content

Commit 888746e

Browse files
committed
utils/gems: use Homebrew-specific gem spec cache
1 parent 4d0c3fa commit 888746e

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

Library/Homebrew/utils/gems.rb

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,14 @@ def self.setup_gem_environment!(setup_path: true)
8989

9090
# Match where our bundler gems are.
9191
gem_home = "#{RUBY_BUNDLE_VENDOR_DIRECTORY}/#{RbConfig::CONFIG["ruby_version"]}"
92+
homebrew_cache = ENV.fetch("HOMEBREW_CACHE", nil)
93+
gem_cache = "#{homebrew_cache}/gem-spec-cache" if homebrew_cache
94+
9295
Gem.paths = {
93-
"GEM_HOME" => gem_home,
94-
"GEM_PATH" => gem_home,
95-
}
96+
"GEM_HOME" => gem_home,
97+
"GEM_PATH" => gem_home,
98+
"GEM_SPEC_CACHE" => gem_cache,
99+
}.compact
96100

97101
# Set TMPDIR so Xcode's `make` doesn't fall back to `/var/tmp/`,
98102
# which may be not user-writable.
@@ -110,6 +114,7 @@ def self.setup_gem_environment!(setup_path: true)
110114
# We don't do this unless requested as some formulae may invoke system Ruby instead of ours.
111115
ENV["GEM_HOME"] = gem_home
112116
ENV["GEM_PATH"] = gem_home
117+
ENV["GEM_SPEC_CACHE"] = gem_cache if gem_cache
113118
end
114119

115120
def self.install_gem!(name, version: nil, setup_gem_environment: true)
@@ -222,6 +227,7 @@ def self.install_bundler_gems!(only_warn_on_failure: false, setup_path: true, gr
222227
old_path = ENV.fetch("PATH", nil)
223228
old_gem_path = ENV.fetch("GEM_PATH", nil)
224229
old_gem_home = ENV.fetch("GEM_HOME", nil)
230+
old_gem_spec_cache = ENV.fetch("GEM_SPEC_CACHE", nil)
225231
old_bundle_gemfile = ENV.fetch("BUNDLE_GEMFILE", nil)
226232
old_bundle_with = ENV.fetch("BUNDLE_WITH", nil)
227233
old_bundle_frozen = ENV.fetch("BUNDLE_FROZEN", nil)
@@ -343,6 +349,7 @@ def self.install_bundler_gems!(only_warn_on_failure: false, setup_path: true, gr
343349
ENV["PATH"] = old_path
344350
ENV["GEM_PATH"] = old_gem_path
345351
ENV["GEM_HOME"] = old_gem_home
352+
ENV["GEM_SPEC_CACHE"] = old_gem_spec_cache
346353
ENV["BUNDLE_GEMFILE"] = old_bundle_gemfile
347354
ENV["BUNDLE_WITH"] = old_bundle_with
348355
ENV["BUNDLE_FROZEN"] = old_bundle_frozen

0 commit comments

Comments
 (0)