rubygems-update 2.3.0 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rubygems-update might be problematic. Click here for more details.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CONTRIBUTING +14 -2
- data/History.txt +63 -0
- data/Rakefile +68 -91
- data/lib/rubygems.rb +5 -3
- data/lib/rubygems/command_manager.rb +1 -0
- data/lib/rubygems/commands/contents_command.rb +23 -2
- data/lib/rubygems/commands/install_command.rb +8 -0
- data/lib/rubygems/commands/open_command.rb +1 -8
- data/lib/rubygems/commands/uninstall_command.rb +9 -1
- data/lib/rubygems/commands/update_command.rb +1 -1
- data/lib/rubygems/core_ext/kernel_gem.rb +8 -1
- data/lib/rubygems/core_ext/kernel_require.rb +12 -22
- data/lib/rubygems/defaults.rb +17 -5
- data/lib/rubygems/dependency.rb +7 -1
- data/lib/rubygems/dependency_installer.rb +3 -0
- data/lib/rubygems/ext/ext_conf_builder.rb +13 -11
- data/lib/rubygems/install_update_options.rb +13 -0
- data/lib/rubygems/installer.rb +36 -20
- data/lib/rubygems/installer_test_case.rb +2 -0
- data/lib/rubygems/local_remote_options.rb +1 -1
- data/lib/rubygems/name_tuple.rb +1 -1
- data/lib/rubygems/request_set.rb +14 -3
- data/lib/rubygems/request_set/gem_dependency_api.rb +12 -0
- data/lib/rubygems/request_set/lockfile.rb +3 -1
- data/lib/rubygems/resolver.rb +15 -0
- data/lib/rubygems/resolver/best_set.rb +28 -0
- data/lib/rubygems/resolver/conflict.rb +45 -7
- data/lib/rubygems/resolver/git_specification.rb +24 -0
- data/lib/rubygems/resolver/lock_specification.rb +22 -0
- data/lib/rubygems/source.rb +2 -0
- data/lib/rubygems/source/git.rb +1 -1
- data/lib/rubygems/source/installed.rb +2 -1
- data/lib/rubygems/specification.rb +16 -15
- data/lib/rubygems/test_case.rb +9 -5
- data/test/rubygems/test_gem.rb +72 -2
- data/test/rubygems/test_gem_commands_contents_command.rb +46 -3
- data/test/rubygems/test_gem_commands_install_command.rb +32 -0
- data/test/rubygems/test_gem_commands_uninstall_command.rb +18 -0
- data/test/rubygems/test_gem_dependency.rb +23 -0
- data/test/rubygems/test_gem_dependency_installer.rb +17 -0
- data/test/rubygems/test_gem_ext_builder.rb +12 -1
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +2 -2
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +24 -8
- data/test/rubygems/test_gem_install_update_options.rb +16 -0
- data/test/rubygems/test_gem_installer.rb +52 -0
- data/test/rubygems/test_gem_local_remote_options.rb +13 -0
- data/test/rubygems/test_gem_package.rb +3 -1
- data/test/rubygems/test_gem_package_tar_header.rb +2 -0
- data/test/rubygems/test_gem_package_tar_reader.rb +11 -1
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +17 -2
- data/test/rubygems/test_gem_package_tar_writer.rb +1 -0
- data/test/rubygems/test_gem_remote_fetcher.rb +24 -0
- data/test/rubygems/test_gem_request_set.rb +74 -4
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +9 -1
- data/test/rubygems/test_gem_request_set_lockfile.rb +3 -1
- data/test/rubygems/test_gem_requirement.rb +8 -0
- data/test/rubygems/test_gem_resolver.rb +39 -0
- data/test/rubygems/test_gem_resolver_best_set.rb +57 -0
- data/test/rubygems/test_gem_resolver_conflict.rb +22 -10
- data/test/rubygems/test_gem_resolver_git_specification.rb +12 -0
- data/test/rubygems/test_gem_source_git.rb +6 -2
- data/test/rubygems/test_gem_source_installed.rb +8 -0
- data/test/rubygems/test_gem_source_lock.rb +2 -2
- data/test/rubygems/test_gem_source_vendor.rb +4 -0
- data/test/rubygems/test_kernel.rb +6 -0
- data/test/rubygems/test_require.rb +60 -0
- metadata +5 -5
- metadata.gz.sig +0 -0
@@ -61,14 +61,7 @@ class Gem::Commands::OpenCommand < Gem::Command
|
|
61
61
|
end
|
62
62
|
|
63
63
|
def open_editor path
|
64
|
-
|
65
|
-
pid = fork do
|
66
|
-
args = (@editor.split(/\s+/) + [path]).join(' ')
|
67
|
-
exec(args)
|
68
|
-
end
|
69
|
-
|
70
|
-
Process.detach pid
|
71
|
-
end
|
64
|
+
system(*@editor.split(/\s+/) + [path])
|
72
65
|
end
|
73
66
|
|
74
67
|
def spec_for name
|
@@ -15,7 +15,7 @@ class Gem::Commands::UninstallCommand < Gem::Command
|
|
15
15
|
def initialize
|
16
16
|
super 'uninstall', 'Uninstall gems from the local repository',
|
17
17
|
:version => Gem::Requirement.default, :user_install => true,
|
18
|
-
:check_dev => false
|
18
|
+
:check_dev => false, :vendor => false
|
19
19
|
|
20
20
|
add_option('-a', '--[no-]all',
|
21
21
|
'Uninstall all matching versions'
|
@@ -76,6 +76,14 @@ class Gem::Commands::UninstallCommand < Gem::Command
|
|
76
76
|
|
77
77
|
add_version_option
|
78
78
|
add_platform_option
|
79
|
+
|
80
|
+
add_option('--vendor',
|
81
|
+
'Uninstall gem from the vendor directory.',
|
82
|
+
'Only for use by gem repackagers.') do |value, options|
|
83
|
+
alert_warning 'Use your OS package manager to uninstall vendor gems'
|
84
|
+
options[:vendor] = true
|
85
|
+
options[:install_dir] = Gem.vendor_dir
|
86
|
+
end
|
79
87
|
end
|
80
88
|
|
81
89
|
def arguments # :nodoc:
|
@@ -56,7 +56,7 @@ class Gem::Commands::UpdateCommand < Gem::Command
|
|
56
56
|
<<-EOF
|
57
57
|
The update command will update your gems to the latest version.
|
58
58
|
|
59
|
-
The update
|
59
|
+
The update command does not remove the previous version. Use the cleanup
|
60
60
|
command to remove old versions.
|
61
61
|
EOF
|
62
62
|
end
|
@@ -26,6 +26,11 @@ module Kernel
|
|
26
26
|
# Kernel#gem should be called *before* any require statements (otherwise
|
27
27
|
# RubyGems may load a conflicting library version).
|
28
28
|
#
|
29
|
+
# Kernel#gem only loads prerelease versions when prerelease +requirements+
|
30
|
+
# are given:
|
31
|
+
#
|
32
|
+
# gem 'rake', '>= 1.1.a', '< 2'
|
33
|
+
#
|
29
34
|
# In older RubyGems versions, the environment variable GEM_SKIP could be
|
30
35
|
# used to skip activation of specified gems, for example to test out changes
|
31
36
|
# that haven't been installed yet. Now RubyGems defers to -I and the
|
@@ -51,7 +56,9 @@ module Kernel
|
|
51
56
|
end
|
52
57
|
|
53
58
|
spec = Gem::Dependency.new(gem_name, *requirements).to_spec
|
54
|
-
|
59
|
+
Gem::LOADED_SPECS_MUTEX.synchronize {
|
60
|
+
spec.activate
|
61
|
+
} if spec
|
55
62
|
end
|
56
63
|
|
57
64
|
private :gem
|
@@ -50,12 +50,8 @@ module Kernel
|
|
50
50
|
# normal require handle loading a gem from the rescue below.
|
51
51
|
|
52
52
|
if Gem::Specification.unresolved_deps.empty? then
|
53
|
-
|
54
|
-
|
55
|
-
return gem_original_require(path)
|
56
|
-
ensure
|
57
|
-
RUBYGEMS_ACTIVATION_MONITOR.enter
|
58
|
-
end
|
53
|
+
RUBYGEMS_ACTIVATION_MONITOR.exit
|
54
|
+
return gem_original_require(path)
|
59
55
|
end
|
60
56
|
|
61
57
|
# If +path+ is for a gem that has already been loaded, don't
|
@@ -71,8 +67,6 @@ module Kernel
|
|
71
67
|
begin
|
72
68
|
RUBYGEMS_ACTIVATION_MONITOR.exit
|
73
69
|
return gem_original_require(path)
|
74
|
-
ensure
|
75
|
-
RUBYGEMS_ACTIVATION_MONITOR.enter
|
76
70
|
end if spec
|
77
71
|
|
78
72
|
# Attempt to find +path+ in any unresolved gems...
|
@@ -105,6 +99,7 @@ module Kernel
|
|
105
99
|
names = found_specs.map(&:name).uniq
|
106
100
|
|
107
101
|
if names.size > 1 then
|
102
|
+
RUBYGEMS_ACTIVATION_MONITOR.exit
|
108
103
|
raise Gem::LoadError, "#{path} found in multiple gems: #{names.join ', '}"
|
109
104
|
end
|
110
105
|
|
@@ -115,32 +110,27 @@ module Kernel
|
|
115
110
|
unless valid then
|
116
111
|
le = Gem::LoadError.new "unable to find a version of '#{names.first}' to activate"
|
117
112
|
le.name = names.first
|
113
|
+
RUBYGEMS_ACTIVATION_MONITOR.exit
|
118
114
|
raise le
|
119
115
|
end
|
120
116
|
|
121
117
|
valid.activate
|
122
118
|
end
|
123
119
|
|
124
|
-
|
125
|
-
|
126
|
-
return gem_original_require(path)
|
127
|
-
ensure
|
128
|
-
RUBYGEMS_ACTIVATION_MONITOR.enter
|
129
|
-
end
|
120
|
+
RUBYGEMS_ACTIVATION_MONITOR.exit
|
121
|
+
return gem_original_require(path)
|
130
122
|
rescue LoadError => load_error
|
123
|
+
RUBYGEMS_ACTIVATION_MONITOR.enter
|
124
|
+
|
131
125
|
if load_error.message.start_with?("Could not find") or
|
132
126
|
(load_error.message.end_with?(path) and Gem.try_activate(path)) then
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
RUBYGEMS_ACTIVATION_MONITOR.enter
|
138
|
-
end
|
127
|
+
RUBYGEMS_ACTIVATION_MONITOR.exit
|
128
|
+
return gem_original_require(path)
|
129
|
+
else
|
130
|
+
RUBYGEMS_ACTIVATION_MONITOR.exit
|
139
131
|
end
|
140
132
|
|
141
133
|
raise load_error
|
142
|
-
ensure
|
143
|
-
RUBYGEMS_ACTIVATION_MONITOR.exit
|
144
134
|
end
|
145
135
|
|
146
136
|
private :require
|
data/lib/rubygems/defaults.rb
CHANGED
@@ -89,11 +89,11 @@ module Gem
|
|
89
89
|
# Default gem load path
|
90
90
|
|
91
91
|
def self.default_path
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
92
|
+
path = []
|
93
|
+
path << user_dir if user_home && File.exist?(user_home)
|
94
|
+
path << default_dir
|
95
|
+
path << vendor_dir if File.directory? vendor_dir
|
96
|
+
path
|
97
97
|
end
|
98
98
|
|
99
99
|
##
|
@@ -160,4 +160,16 @@ module Gem
|
|
160
160
|
true
|
161
161
|
end
|
162
162
|
|
163
|
+
##
|
164
|
+
# Directory where vendor gems are installed.
|
165
|
+
|
166
|
+
def self.vendor_dir # :nodoc:
|
167
|
+
if vendor_dir = ENV['GEM_VENDOR'] then
|
168
|
+
return vendor_dir.dup
|
169
|
+
end
|
170
|
+
|
171
|
+
File.join RbConfig::CONFIG['vendordir'], 'gems',
|
172
|
+
RbConfig::CONFIG['ruby_version']
|
173
|
+
end
|
174
|
+
|
163
175
|
end
|
data/lib/rubygems/dependency.rb
CHANGED
@@ -321,6 +321,12 @@ class Gem::Dependency
|
|
321
321
|
def to_spec
|
322
322
|
matches = self.to_specs
|
323
323
|
|
324
|
-
matches.find { |spec| spec.activated? }
|
324
|
+
active = matches.find { |spec| spec.activated? }
|
325
|
+
|
326
|
+
return active if active
|
327
|
+
|
328
|
+
matches.delete_if { |spec| spec.version.prerelease? } unless prerelease?
|
329
|
+
|
330
|
+
matches.last
|
325
331
|
end
|
326
332
|
end
|
@@ -72,6 +72,7 @@ class Gem::DependencyInstaller
|
|
72
72
|
def initialize options = {}
|
73
73
|
@only_install_dir = !!options[:install_dir]
|
74
74
|
@install_dir = options[:install_dir] || Gem.dir
|
75
|
+
@build_root = options[:build_root]
|
75
76
|
|
76
77
|
options = DEFAULT_OPTIONS.merge options
|
77
78
|
|
@@ -376,6 +377,7 @@ class Gem::DependencyInstaller
|
|
376
377
|
options = {
|
377
378
|
:bin_dir => @bin_dir,
|
378
379
|
:build_args => @build_args,
|
380
|
+
:document => @document,
|
379
381
|
:env_shebang => @env_shebang,
|
380
382
|
:force => @force,
|
381
383
|
:format_executable => @format_executable,
|
@@ -383,6 +385,7 @@ class Gem::DependencyInstaller
|
|
383
385
|
:security_policy => @security_policy,
|
384
386
|
:user_install => @user_install,
|
385
387
|
:wrappers => @wrappers,
|
388
|
+
:build_root => @build_root,
|
386
389
|
:install_as_default => @install_as_default
|
387
390
|
}
|
388
391
|
options[:install_dir] = @install_dir if @only_install_dir
|
@@ -11,13 +11,15 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
|
11
11
|
FileEntry = FileUtils::Entry_ # :nodoc:
|
12
12
|
|
13
13
|
def self.build(extension, directory, dest_path, results, args=[], lib_dir=nil)
|
14
|
-
|
14
|
+
# relative path required as some versions of mktmpdir return an absolute
|
15
|
+
# path which breaks make if it includes a space in the name
|
16
|
+
tmp_dest = get_relative_path(Dir.mktmpdir(".gem.", "."))
|
15
17
|
|
16
18
|
t = nil
|
17
19
|
Tempfile.open %w"siteconf .rb", "." do |siteconf|
|
18
20
|
t = siteconf
|
19
21
|
siteconf.puts "require 'rbconfig'"
|
20
|
-
siteconf.puts "dest_path = #{
|
22
|
+
siteconf.puts "dest_path = #{tmp_dest.dump}"
|
21
23
|
%w[sitearchdir sitelibdir].each do |dir|
|
22
24
|
siteconf.puts "RbConfig::MAKEFILE_CONFIG['#{dir}'] = dest_path"
|
23
25
|
siteconf.puts "RbConfig::CONFIG['#{dir}'] = dest_path"
|
@@ -25,24 +27,19 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
|
25
27
|
|
26
28
|
siteconf.flush
|
27
29
|
|
28
|
-
siteconf_path = File.expand_path siteconf.path
|
29
|
-
|
30
|
-
rubyopt = ENV["RUBYOPT"]
|
31
30
|
destdir = ENV["DESTDIR"]
|
32
31
|
|
33
32
|
begin
|
34
|
-
|
35
|
-
cmd = [Gem.ruby, File.basename(extension), *args].join ' '
|
33
|
+
cmd = [Gem.ruby, "-r", get_relative_path(siteconf.path), File.basename(extension), *args].join ' '
|
36
34
|
|
37
35
|
begin
|
38
36
|
run cmd, results
|
39
37
|
ensure
|
40
38
|
FileUtils.mv 'mkmf.log', dest_path if File.exist? 'mkmf.log'
|
39
|
+
siteconf.unlink
|
41
40
|
end
|
42
41
|
|
43
42
|
ENV["DESTDIR"] = nil
|
44
|
-
ENV["RUBYOPT"] = rubyopt
|
45
|
-
siteconf.unlink
|
46
43
|
|
47
44
|
make dest_path, results
|
48
45
|
|
@@ -57,11 +54,10 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
|
57
54
|
|
58
55
|
FileEntry.new(tmp_dest).traverse do |ent|
|
59
56
|
destent = ent.class.new(dest_path, ent.rel)
|
60
|
-
destent.exist? or
|
57
|
+
destent.exist? or FileUtils.mv(ent.path, destent.path)
|
61
58
|
end
|
62
59
|
end
|
63
60
|
ensure
|
64
|
-
ENV["RUBYOPT"] = rubyopt
|
65
61
|
ENV["DESTDIR"] = destdir
|
66
62
|
end
|
67
63
|
end
|
@@ -72,5 +68,11 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
|
72
68
|
FileUtils.rm_rf tmp_dest if tmp_dest
|
73
69
|
end
|
74
70
|
|
71
|
+
private
|
72
|
+
def self.get_relative_path(path)
|
73
|
+
path[0..Dir.pwd.length-1] = '.' if path.start_with?(Dir.pwd)
|
74
|
+
path
|
75
|
+
end
|
76
|
+
|
75
77
|
end
|
76
78
|
|
@@ -59,6 +59,19 @@ module Gem::InstallUpdateOptions
|
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
62
|
+
add_option(:"Install/Update", '--build-root DIR',
|
63
|
+
'Temporary installation root. Useful for building',
|
64
|
+
'packages. Do not use this when installing remote gems.') do |value, options|
|
65
|
+
options[:build_root] = File.expand_path(value)
|
66
|
+
end
|
67
|
+
|
68
|
+
add_option(:"Install/Update", '--vendor',
|
69
|
+
'Install gem into the vendor directory.',
|
70
|
+
'Only for use by gem repackagers.') do |value, options|
|
71
|
+
options[:vendor] = true
|
72
|
+
options[:install_dir] = Gem.vendor_dir
|
73
|
+
end
|
74
|
+
|
62
75
|
add_option(:"Install/Update", '-N', '--no-document',
|
63
76
|
'Disable documentation generation') do |value, options|
|
64
77
|
options[:document] = []
|
data/lib/rubygems/installer.rb
CHANGED
@@ -39,7 +39,9 @@ class Gem::Installer
|
|
39
39
|
|
40
40
|
include Gem::UserInteraction
|
41
41
|
|
42
|
-
|
42
|
+
##
|
43
|
+
# Filename of the gem being installed.
|
44
|
+
|
43
45
|
attr_reader :gem
|
44
46
|
|
45
47
|
##
|
@@ -47,6 +49,8 @@ class Gem::Installer
|
|
47
49
|
|
48
50
|
attr_reader :bin_dir
|
49
51
|
|
52
|
+
attr_reader :build_root # :nodoc:
|
53
|
+
|
50
54
|
##
|
51
55
|
# The gem repository the gem will be installed into
|
52
56
|
|
@@ -71,7 +75,13 @@ class Gem::Installer
|
|
71
75
|
|
72
76
|
attr_accessor :path_warning
|
73
77
|
|
74
|
-
|
78
|
+
##
|
79
|
+
# Overrides the executable format.
|
80
|
+
#
|
81
|
+
# This is a sprintf format with a "%s" which will be replaced with the
|
82
|
+
# executable name. It is based off the ruby executable name's difference
|
83
|
+
# from "ruby".
|
84
|
+
|
75
85
|
attr_writer :exec_format
|
76
86
|
|
77
87
|
# Defaults to use Ruby's program prefix and suffix.
|
@@ -386,8 +396,7 @@ class Gem::Installer
|
|
386
396
|
end
|
387
397
|
end
|
388
398
|
|
389
|
-
|
390
|
-
def generate_bin
|
399
|
+
def generate_bin # :nodoc:
|
391
400
|
return if spec.executables.nil? or spec.executables.empty?
|
392
401
|
|
393
402
|
Dir.mkdir @bin_dir unless File.exist? @bin_dir
|
@@ -536,8 +545,7 @@ class Gem::Installer
|
|
536
545
|
end
|
537
546
|
end
|
538
547
|
|
539
|
-
|
540
|
-
def ensure_required_ruby_version_met
|
548
|
+
def ensure_required_ruby_version_met # :nodoc:
|
541
549
|
if rrv = spec.required_ruby_version then
|
542
550
|
unless rrv.satisfied_by? Gem.ruby_version then
|
543
551
|
raise Gem::InstallError, "#{spec.name} requires Ruby version #{rrv}."
|
@@ -545,8 +553,7 @@ class Gem::Installer
|
|
545
553
|
end
|
546
554
|
end
|
547
555
|
|
548
|
-
|
549
|
-
def ensure_required_rubygems_version_met
|
556
|
+
def ensure_required_rubygems_version_met # :nodoc:
|
550
557
|
if rrgv = spec.required_rubygems_version then
|
551
558
|
unless rrgv.satisfied_by? Gem.rubygems_version then
|
552
559
|
raise Gem::InstallError,
|
@@ -556,8 +563,7 @@ class Gem::Installer
|
|
556
563
|
end
|
557
564
|
end
|
558
565
|
|
559
|
-
|
560
|
-
def ensure_dependencies_met
|
566
|
+
def ensure_dependencies_met # :nodoc:
|
561
567
|
deps = spec.runtime_dependencies
|
562
568
|
deps |= spec.development_dependencies if @development
|
563
569
|
|
@@ -566,8 +572,7 @@ class Gem::Installer
|
|
566
572
|
end
|
567
573
|
end
|
568
574
|
|
569
|
-
|
570
|
-
def process_options
|
575
|
+
def process_options # :nodoc:
|
571
576
|
@options = {
|
572
577
|
:bin_dir => nil,
|
573
578
|
:env_shebang => false,
|
@@ -590,12 +595,20 @@ class Gem::Installer
|
|
590
595
|
# (or use) a new bin dir under the gem_home.
|
591
596
|
@bin_dir = options[:bin_dir] || Gem.bindir(gem_home)
|
592
597
|
@development = options[:development]
|
598
|
+
@build_root = options[:build_root]
|
593
599
|
|
594
600
|
@build_args = options[:build_args] || Gem::Command.build_args
|
601
|
+
|
602
|
+
unless @build_root.nil?
|
603
|
+
require 'pathname'
|
604
|
+
@build_root = Pathname.new(@build_root).expand_path
|
605
|
+
@bin_dir = File.join(@build_root, options[:bin_dir] || Gem.bindir(@gem_home))
|
606
|
+
@gem_home = File.join(@build_root, @gem_home)
|
607
|
+
alert_warning "You build with buildroot.\n Build root: #{@build_root}\n Bin dir: #{@bin_dir}\n Gem home: #{@gem_home}"
|
608
|
+
end
|
595
609
|
end
|
596
610
|
|
597
|
-
|
598
|
-
def check_that_user_bin_dir_is_in_path
|
611
|
+
def check_that_user_bin_dir_is_in_path # :nodoc:
|
599
612
|
user_bin_dir = @bin_dir || Gem.bindir(gem_home)
|
600
613
|
user_bin_dir = user_bin_dir.gsub(File::SEPARATOR, File::ALT_SEPARATOR) if
|
601
614
|
File::ALT_SEPARATOR
|
@@ -606,16 +619,19 @@ class Gem::Installer
|
|
606
619
|
user_bin_dir = user_bin_dir.downcase
|
607
620
|
end
|
608
621
|
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
622
|
+
path = path.split(File::PATH_SEPARATOR)
|
623
|
+
|
624
|
+
unless path.include? user_bin_dir then
|
625
|
+
unless !Gem.win_platform? && (path.include? user_bin_dir.sub(ENV['HOME'], '~'))
|
626
|
+
unless self.class.path_warning then
|
627
|
+
alert_warning "You don't have #{user_bin_dir} in your PATH,\n\t gem executables will not run."
|
628
|
+
self.class.path_warning = true
|
629
|
+
end
|
613
630
|
end
|
614
631
|
end
|
615
632
|
end
|
616
633
|
|
617
|
-
|
618
|
-
def verify_gem_home(unpack = false)
|
634
|
+
def verify_gem_home(unpack = false) # :nodoc:
|
619
635
|
FileUtils.mkdir_p gem_home
|
620
636
|
raise Gem::FilePermissionError, gem_home unless
|
621
637
|
unpack or File.writable?(gem_home)
|
@@ -101,6 +101,8 @@ class Gem::InstallerTestCase < Gem::TestCase
|
|
101
101
|
|
102
102
|
@installer = util_installer @spec, @gemhome
|
103
103
|
@user_installer = util_installer @user_spec, Gem.user_dir, :user
|
104
|
+
|
105
|
+
Gem::Installer.path_warning = false
|
104
106
|
end
|
105
107
|
|
106
108
|
def util_gem_bindir spec = @spec # :nodoc:
|