зеркало из https://github.com/github/ruby.git
[rubygems/rubygems] Fix `ruby setup.rb --destdir /foo` modifying global specs
Running a command like that is actually removing any previous default bundler specs in the default RubyGems installation (outside of destdir). It should instead only modify destdir. https://github.com/rubygems/rubygems/commit/5ed275383c
This commit is contained in:
Родитель
fae0d60120
Коммит
fa5724cca9
|
@ -361,17 +361,17 @@ By default, this RubyGems will install gem as:
|
|||
|
||||
def install_default_bundler_gem(bin_dir)
|
||||
current_default_spec = Gem::Specification.default_stubs.find {|s| s.name == "bundler" }
|
||||
specs_dir = if current_default_spec
|
||||
specs_dir = if current_default_spec && default_dir == Gem.default_dir
|
||||
Gem::Specification.remove_spec current_default_spec
|
||||
loaded_from = current_default_spec.loaded_from
|
||||
File.delete(loaded_from)
|
||||
File.dirname(loaded_from)
|
||||
else
|
||||
File.join(default_dir, "specifications", "default")
|
||||
target_specs_dir = File.join(default_dir, "specifications", "default")
|
||||
mkdir_p target_specs_dir, :mode => 0755
|
||||
target_specs_dir
|
||||
end
|
||||
|
||||
mkdir_p specs_dir, :mode => 0755
|
||||
|
||||
bundler_spec = Dir.chdir("bundler") { Gem::Specification.load("bundler.gemspec") }
|
||||
default_spec_path = File.join(specs_dir, "#{bundler_spec.full_name}.gemspec")
|
||||
Gem.write_binary(default_spec_path, bundler_spec.to_ruby)
|
||||
|
|
|
@ -279,6 +279,14 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|||
|
||||
@cmd.install_default_bundler_gem bin_dir
|
||||
|
||||
# leaves other versions of bundler gemspecs on default specification directory.
|
||||
assert_path_exist previous_bundler_specification_path
|
||||
assert_path_not_exist new_bundler_specification_path
|
||||
|
||||
# installs the updated bundler gemspec to destdir
|
||||
assert_path_not_exist prepend_destdir(destdir, previous_bundler_specification_path)
|
||||
assert_path_exist prepend_destdir(destdir, new_bundler_specification_path)
|
||||
|
||||
bundler_spec.executables.each do |e|
|
||||
assert_path_exist prepend_destdir(destdir, File.join(@gemhome, 'gems', bundler_spec.full_name, bundler_spec.bindir, e))
|
||||
end
|
||||
|
|
Загрузка…
Ссылка в новой задаче