From a3b784b3a068ddd9a395b8951e9977035eca5066 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Mon, 22 Jul 2019 14:31:10 +0200 Subject: [PATCH] [rubygems/rubygems] Move default specifications dir definition out of BasicSpecification. This was never the right place. The method got there just by evolution, not by design. Move it within default methods, where it suits better. Since this method is presumably used just internally, it should be safe to deprecate it and remove later. https://github.com/rubygems/rubygems/commit/0c0dd9458a --- lib/rubygems/basic_specification.rb | 11 +++++++++-- lib/rubygems/commands/setup_command.rb | 2 +- lib/rubygems/defaults.rb | 7 +++++++ lib/rubygems/installer.rb | 2 +- lib/rubygems/specification.rb | 4 ++-- lib/rubygems/uninstaller.rb | 2 +- test/rubygems/test_gem_commands_setup_command.rb | 6 +++--- test/rubygems/test_gem_specification.rb | 6 +++--- 8 files changed, 27 insertions(+), 13 deletions(-) diff --git a/lib/rubygems/basic_specification.rb b/lib/rubygems/basic_specification.rb index bafada01a3..168d07a72f 100644 --- a/lib/rubygems/basic_specification.rb +++ b/lib/rubygems/basic_specification.rb @@ -35,7 +35,14 @@ class Gem::BasicSpecification end def self.default_specifications_dir - File.join(Gem.default_dir, "specifications", "default") + Gem.default_specifications_dir + end + + class << self + + extend Gem::Deprecate + deprecate :default_specifications_dir, "Gem::BasicSpecification.default_specifications_dir", 2020, 02 + end ## @@ -84,7 +91,7 @@ class Gem::BasicSpecification def default_gem? loaded_from && - File.dirname(loaded_from) == self.class.default_specifications_dir + File.dirname(loaded_from) == Gem.default_specifications_dir end ## diff --git a/lib/rubygems/commands/setup_command.rb b/lib/rubygems/commands/setup_command.rb index 1754630c8c..1cbc980eb0 100644 --- a/lib/rubygems/commands/setup_command.rb +++ b/lib/rubygems/commands/setup_command.rb @@ -382,7 +382,7 @@ By default, this RubyGems will install gem as: end def install_default_bundler_gem(bin_dir) - specs_dir = Gem::Specification.default_specifications_dir + specs_dir = Gem.default_specifications_dir specs_dir = File.join(options[:destdir], specs_dir) unless Gem.win_platform? mkdir_p specs_dir, :mode => 0755 diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb index 33b6ab3f3e..da304b213b 100644 --- a/lib/rubygems/defaults.rb +++ b/lib/rubygems/defaults.rb @@ -70,6 +70,13 @@ module Gem nil # default to standard layout end + ## + # Path to specification files of default gems. + + def self.default_specifications_dir + File.join(Gem.default_dir, "specifications", "default") + end + ## # Path for gems in the user's home directory diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb index 0676dcea64..b230ce7bed 100644 --- a/lib/rubygems/installer.rb +++ b/lib/rubygems/installer.rb @@ -448,7 +448,7 @@ class Gem::Installer # def default_spec_file - File.join Gem::Specification.default_specifications_dir, "#{spec.full_name}.gemspec" + File.join Gem.default_specifications_dir, "#{spec.full_name}.gemspec" end ## diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb index 3b0b86230b..f40b9fd5fc 100644 --- a/lib/rubygems/specification.rb +++ b/lib/rubygems/specification.rb @@ -819,7 +819,7 @@ class Gem::Specification < Gem::BasicSpecification def self.default_stubs(pattern = "*.gemspec") base_dir = Gem.default_dir gems_dir = File.join base_dir, "gems" - gemspec_stubs_in(default_specifications_dir, pattern) do |path| + gemspec_stubs_in(Gem.default_specifications_dir, pattern) do |path| Gem::StubSpecification.default_gemspec_stub(path, base_dir, gems_dir) end end @@ -858,7 +858,7 @@ class Gem::Specification < Gem::BasicSpecification # Loads the default specifications. It should be called only once. def self.load_defaults - each_spec([default_specifications_dir]) do |spec| + each_spec([Gem.default_specifications_dir]) do |spec| # #load returns nil if the spec is bad, so we just ignore # it at this stage Gem.register_default_spec(spec) diff --git a/lib/rubygems/uninstaller.rb b/lib/rubygems/uninstaller.rb index 291bb6d611..bbca22154e 100644 --- a/lib/rubygems/uninstaller.rb +++ b/lib/rubygems/uninstaller.rb @@ -80,7 +80,7 @@ class Gem::Uninstaller dirs = Gem::Specification.dirs + - [Gem::Specification.default_specifications_dir] + [Gem.default_specifications_dir] Gem::Specification.each_spec dirs do |spec| next unless dependency.matches_spec? spec diff --git a/test/rubygems/test_gem_commands_setup_command.rb b/test/rubygems/test_gem_commands_setup_command.rb index 0345386804..ad29b1bde5 100644 --- a/test/rubygems/test_gem_commands_setup_command.rb +++ b/test/rubygems/test_gem_commands_setup_command.rb @@ -67,7 +67,7 @@ class TestGemCommandsSetupCommand < Gem::TestCase io.puts gemspec.to_ruby end - open(File.join(Gem::Specification.default_specifications_dir, "bundler-1.15.4.gemspec"), 'w') do |io| + open(File.join(Gem.default_specifications_dir, "bundler-1.15.4.gemspec"), 'w') do |io| gemspec.version = "1.15.4" io.puts gemspec.to_ruby end @@ -181,7 +181,7 @@ class TestGemCommandsSetupCommand < Gem::TestCase @cmd.install_default_bundler_gem bin_dir bundler_spec = Gem::Specification.load("bundler/bundler.gemspec") - default_spec_path = File.join(Gem::Specification.default_specifications_dir, "#{bundler_spec.full_name}.gemspec") + default_spec_path = File.join(Gem.default_specifications_dir, "#{bundler_spec.full_name}.gemspec") spec = Gem::Specification.load(default_spec_path) spec.executables.each do |e| @@ -192,7 +192,7 @@ class TestGemCommandsSetupCommand < Gem::TestCase assert_path_exists File.join bin_dir, Gem.default_exec_format % e end - default_dir = Gem::Specification.default_specifications_dir + default_dir = Gem.default_specifications_dir # expect to remove other versions of bundler gemspecs on default specification directory. refute_path_exists File.join(default_dir, "bundler-1.15.4.gemspec") diff --git a/test/rubygems/test_gem_specification.rb b/test/rubygems/test_gem_specification.rb index ffb6ca2ad4..4c68545c3b 100644 --- a/test/rubygems/test_gem_specification.rb +++ b/test/rubygems/test_gem_specification.rb @@ -1126,7 +1126,7 @@ dependencies: [] Gem::Specification.class_variable_set(:@@stubs, nil) dir_standard_specs = File.join Gem.dir, 'specifications' - dir_default_specs = Gem::BasicSpecification.default_specifications_dir + dir_default_specs = Gem.default_specifications_dir # Create gemspecs in three locations used in stubs loaded_spec = Gem::Specification.new 'a', '3' @@ -1146,7 +1146,7 @@ dependencies: [] Gem::Specification.class_variable_set(:@@stubs, nil) dir_standard_specs = File.join Gem.dir, 'specifications' - dir_default_specs = Gem::BasicSpecification.default_specifications_dir + dir_default_specs = Gem.default_specifications_dir # Create gemspecs in three locations used in stubs loaded_spec = Gem::Specification.new 'a', '3' @@ -2049,7 +2049,7 @@ dependencies: [] def test_base_dir_default default_dir = - File.join Gem::Specification.default_specifications_dir, @a1.spec_name + File.join Gem.default_specifications_dir, @a1.spec_name @a1.instance_variable_set :@loaded_from, default_dir