diff options
Diffstat (limited to 'Library/Formula')
| -rw-r--r-- | Library/Formula/ruby.rb | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/Library/Formula/ruby.rb b/Library/Formula/ruby.rb index d60472fd3..49fbd82e7 100644 --- a/Library/Formula/ruby.rb +++ b/Library/Formula/ruby.rb @@ -62,16 +62,21 @@ class Ruby < Formula end def post_install - # Put gem, site and vendor folders in the HOMEBREW_PREFIX + # Preserve gem, site, and vendor folders on upgrade/reinstall + # by placing them in HOMEBREW_PREFIX and sym-linking ruby_lib = HOMEBREW_PREFIX/"lib/ruby" - (ruby_lib/'site_ruby').mkpath - (ruby_lib/'vendor_ruby').mkpath - (ruby_lib/'gems').mkpath - - rm_rf Dir["#{lib}/ruby/{site_ruby,vendor_ruby,gems}"] - (lib/'ruby').install_symlink ruby_lib/'site_ruby', - ruby_lib/'vendor_ruby', - ruby_lib/'gems' + + ["gems", "site_ruby", "vendor_ruby"].each do |name| + link = lib/"ruby"/name + real = ruby_lib/name + + # only overwrite invalid (mutually dependent) links + real.unlink if real.symlink? && real.readlink == link + real.mkpath + + link.unlink if link.exist? + link.symlink real + end end def caveats; <<-EOS.undent |
