rubygems-update 2.0.17 → 2.1.0.rc.1
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 +2 -0
- data/.autotest +1 -1
- data/History.txt +82 -153
- data/Manifest.txt +35 -9
- data/Rakefile +35 -36
- data/lib/rubygems.rb +106 -18
- data/lib/rubygems/available_set.rb +68 -0
- data/lib/rubygems/basic_specification.rb +139 -0
- data/lib/rubygems/command_manager.rb +37 -40
- data/lib/rubygems/commands/cert_command.rb +78 -29
- data/lib/rubygems/commands/cleanup_command.rb +2 -2
- data/lib/rubygems/commands/contents_command.rb +101 -58
- data/lib/rubygems/commands/dependency_command.rb +94 -53
- data/lib/rubygems/commands/environment_command.rb +70 -53
- data/lib/rubygems/commands/fetch_command.rb +1 -2
- data/lib/rubygems/commands/help_command.rb +85 -55
- data/lib/rubygems/commands/install_command.rb +84 -42
- data/lib/rubygems/commands/outdated_command.rb +2 -12
- data/lib/rubygems/commands/owner_command.rb +6 -0
- data/lib/rubygems/commands/pristine_command.rb +26 -16
- data/lib/rubygems/commands/sources_command.rb +85 -70
- data/lib/rubygems/commands/uninstall_command.rb +32 -2
- data/lib/rubygems/commands/update_command.rb +111 -75
- data/lib/rubygems/config_file.rb +15 -3
- data/lib/rubygems/core_ext/kernel_require.rb +9 -31
- data/lib/rubygems/defaults.rb +8 -0
- data/lib/rubygems/dependency.rb +4 -2
- data/lib/rubygems/dependency_installer.rb +180 -170
- data/lib/rubygems/dependency_resolver.rb +191 -526
- data/lib/rubygems/dependency_resolver/activation_request.rb +109 -0
- data/lib/rubygems/dependency_resolver/api_set.rb +65 -0
- data/lib/rubygems/dependency_resolver/api_specification.rb +36 -0
- data/lib/rubygems/dependency_resolver/composed_set.rb +18 -0
- data/lib/rubygems/dependency_resolver/current_set.rb +16 -0
- data/lib/rubygems/dependency_resolver/dependency_conflict.rb +85 -0
- data/lib/rubygems/dependency_resolver/dependency_request.rb +51 -0
- data/lib/rubygems/dependency_resolver/index_set.rb +59 -0
- data/lib/rubygems/dependency_resolver/index_specification.rb +53 -0
- data/lib/rubygems/dependency_resolver/installed_specification.rb +38 -0
- data/lib/rubygems/dependency_resolver/installer_set.rb +130 -0
- data/lib/rubygems/exceptions.rb +88 -1
- data/lib/rubygems/ext/builder.rb +1 -1
- data/lib/rubygems/gem_runner.rb +17 -9
- data/lib/rubygems/gemcutter_utilities.rb +72 -42
- data/lib/rubygems/install_default_message.rb +12 -0
- data/lib/rubygems/install_update_options.rb +3 -0
- data/lib/rubygems/installer.rb +55 -30
- data/lib/rubygems/name_tuple.rb +18 -7
- data/lib/rubygems/package.rb +50 -25
- data/lib/rubygems/package/tar_test_case.rb +9 -9
- data/lib/rubygems/package/tar_writer.rb +35 -12
- data/lib/rubygems/package_task.rb +2 -5
- data/lib/rubygems/path_support.rb +10 -0
- data/lib/rubygems/platform.rb +9 -3
- data/lib/rubygems/psych_additions.rb +1 -1
- data/lib/rubygems/remote_fetcher.rb +9 -276
- data/lib/rubygems/request.rb +267 -0
- data/lib/rubygems/request_set.rb +123 -125
- data/lib/rubygems/request_set/gem_dependency_api.rb +39 -0
- data/lib/rubygems/security.rb +32 -23
- data/lib/rubygems/security/policy.rb +35 -9
- data/lib/rubygems/security/signer.rb +2 -2
- data/lib/rubygems/server.rb +8 -16
- data/lib/rubygems/source.rb +25 -14
- data/lib/rubygems/source/installed.rb +28 -0
- data/lib/rubygems/source/local.rb +122 -0
- data/lib/rubygems/source/specific_file.rb +28 -0
- data/lib/rubygems/source_local.rb +2 -89
- data/lib/rubygems/source_specific_file.rb +2 -26
- data/lib/rubygems/spec_fetcher.rb +11 -11
- data/lib/rubygems/specification.rb +186 -198
- data/lib/rubygems/ssl_certs/AddTrustExternalCARoot.pem +88 -30
- data/lib/rubygems/ssl_certs/Entrust_net-Secure-Server-Certification-Authority.pem +90 -0
- data/lib/rubygems/ssl_certs/{GeoTrustGlobalCA.pem → GeoTrust_Global_CA.pem} +20 -20
- data/lib/rubygems/ssl_certs/VerisignClass3PublicPrimaryCertificationAuthority-G2.pem +57 -0
- data/lib/rubygems/stub_specification.rb +119 -0
- data/lib/rubygems/test_case.rb +117 -49
- data/lib/rubygems/uninstaller.rb +14 -9
- data/lib/rubygems/uri_formatter.rb +39 -0
- data/lib/rubygems/util/list.rb +44 -0
- data/lib/rubygems/version.rb +15 -5
- data/lib/rubygems/version_option.rb +8 -2
- data/test/rubygems/ca_cert.pem +23 -0
- data/test/rubygems/client.pem +49 -0
- data/test/rubygems/encrypted_private_key.pem +30 -0
- data/test/rubygems/invalid_client.pem +49 -0
- data/test/rubygems/specifications/bar-0.0.2.gemspec +9 -0
- data/test/rubygems/specifications/foo-0.0.1.gemspec +0 -0
- data/test/rubygems/test_gem.rb +76 -454
- data/test/rubygems/test_gem_command_manager.rb +23 -21
- data/test/rubygems/test_gem_commands_cert_command.rb +154 -14
- data/test/rubygems/test_gem_commands_cleanup_command.rb +15 -0
- data/test/rubygems/test_gem_commands_contents_command.rb +32 -4
- data/test/rubygems/test_gem_commands_environment_command.rb +9 -1
- data/test/rubygems/test_gem_commands_fetch_command.rb +2 -28
- data/test/rubygems/test_gem_commands_help_command.rb +6 -3
- data/test/rubygems/test_gem_commands_install_command.rb +2 -65
- data/test/rubygems/test_gem_commands_owner_command.rb +49 -0
- data/test/rubygems/test_gem_commands_pristine_command.rb +30 -0
- data/test/rubygems/test_gem_commands_sources_command.rb +1 -1
- data/test/rubygems/test_gem_commands_uninstall_command.rb +33 -0
- data/test/rubygems/test_gem_commands_update_command.rb +2 -1
- data/test/rubygems/test_gem_config_file.rb +12 -0
- data/test/rubygems/test_gem_dependency_installer.rb +58 -65
- data/test/rubygems/test_gem_dependency_resolver.rb +6 -3
- data/test/rubygems/test_gem_dependency_resolver_dependency_conflict.rb +36 -0
- data/test/rubygems/test_gem_ext_builder.rb +2 -4
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +7 -2
- data/test/rubygems/test_gem_gem_runner.rb +17 -13
- data/test/rubygems/test_gem_gemcutter_utilities.rb +6 -19
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +41 -0
- data/test/rubygems/test_gem_install_update_options.rb +4 -1
- data/test/rubygems/test_gem_installer.rb +31 -2
- data/test/rubygems/test_gem_name_tuple.rb +22 -0
- data/test/rubygems/test_gem_package.rb +122 -11
- data/test/rubygems/test_gem_package_old.rb +8 -0
- data/test/rubygems/test_gem_package_tar_reader.rb +9 -8
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +1 -1
- data/test/rubygems/test_gem_package_tar_writer.rb +78 -56
- data/test/rubygems/test_gem_package_task.rb +2 -23
- data/test/rubygems/test_gem_path_support.rb +17 -0
- data/test/rubygems/test_gem_platform.rb +18 -0
- data/test/rubygems/test_gem_remote_fetcher.rb +106 -385
- data/test/rubygems/test_gem_request.rb +239 -0
- data/test/rubygems/test_gem_requirement.rb +9 -11
- data/test/rubygems/test_gem_security.rb +58 -2
- data/test/rubygems/test_gem_security_policy.rb +42 -1
- data/test/rubygems/test_gem_security_signer.rb +13 -1
- data/test/rubygems/test_gem_security_trust_dir.rb +5 -1
- data/test/rubygems/test_gem_server.rb +1 -105
- data/test/rubygems/test_gem_source.rb +4 -14
- data/test/rubygems/test_gem_source_local.rb +4 -4
- data/test/rubygems/test_gem_source_specific_file.rb +1 -1
- data/test/rubygems/test_gem_spec_fetcher.rb +0 -12
- data/test/rubygems/test_gem_specification.rb +452 -28
- data/test/rubygems/test_gem_stub_specification.rb +30 -0
- data/test/rubygems/test_gem_uninstaller.rb +14 -0
- data/test/rubygems/test_gem_uri_formatter.rb +20 -0
- data/test/rubygems/test_gem_version.rb +23 -13
- data/test/rubygems/test_gem_version_option.rb +63 -1
- data/test/rubygems/test_require.rb +0 -12
- data/util/create_encrypted_key.rb +16 -0
- metadata +161 -23
- metadata.gz.sig +0 -0
- data/CVE-2013-4287.txt +0 -36
- data/CVE-2013-4363.txt +0 -45
- data/lib/rubygems/ssl_certs/AddTrustExternalCARoot-2048.pem +0 -25
- data/lib/rubygems/ssl_certs/Class3PublicPrimaryCertificationAuthority.pem +0 -14
- data/lib/rubygems/ssl_certs/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/lib/rubygems/ssl_certs/EntrustnetSecureServerCertificationAuthority.pem +0 -28
- data/test/rubygems/test_bundled_ca.rb +0 -59
- data/util/update_bundled_ca_certificates.rb +0 -103
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'rubygems/command'
|
2
2
|
require 'rubygems/version_option'
|
3
3
|
require 'rubygems/uninstaller'
|
4
|
+
require 'fileutils'
|
4
5
|
|
5
6
|
##
|
6
7
|
# Gem uninstaller command line tool
|
@@ -14,7 +15,7 @@ class Gem::Commands::UninstallCommand < Gem::Command
|
|
14
15
|
def initialize
|
15
16
|
super 'uninstall', 'Uninstall gems from the local repository',
|
16
17
|
:version => Gem::Requirement.default, :user_install => true,
|
17
|
-
:check_dev => false
|
18
|
+
:install_dir => Gem.dir, :check_dev => false
|
18
19
|
|
19
20
|
add_option('-a', '--[no-]all',
|
20
21
|
'Uninstall all matching versions'
|
@@ -67,6 +68,12 @@ class Gem::Commands::UninstallCommand < Gem::Command
|
|
67
68
|
options[:force] = value
|
68
69
|
end
|
69
70
|
|
71
|
+
add_option('--[no-]abort-on-dependent',
|
72
|
+
'Prevent uninstalling gems that are',
|
73
|
+
'depended on by other gems.') do |value, options|
|
74
|
+
options[:abort_on_dependent] = value
|
75
|
+
end
|
76
|
+
|
70
77
|
add_version_option
|
71
78
|
add_platform_option
|
72
79
|
end
|
@@ -86,8 +93,31 @@ class Gem::Commands::UninstallCommand < Gem::Command
|
|
86
93
|
end
|
87
94
|
|
88
95
|
def execute
|
89
|
-
|
96
|
+
if options[:all] and not options[:args].empty? then
|
97
|
+
alert_error 'Gem names and --all may not be used together'
|
98
|
+
terminate_interaction 1
|
99
|
+
elsif options[:all] then
|
100
|
+
uninstall_all
|
101
|
+
else
|
102
|
+
uninstall_specific
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def uninstall_all
|
107
|
+
install_dir = options[:install_dir]
|
108
|
+
|
109
|
+
dirs_to_be_emptied = Dir[File.join(install_dir, '*')]
|
110
|
+
dirs_to_be_emptied.delete_if { |dir| dir.end_with? 'build_info' }
|
111
|
+
|
112
|
+
dirs_to_be_emptied.each do |dir|
|
113
|
+
FileUtils.rm_rf Dir[File.join(dir, '*')]
|
114
|
+
end
|
115
|
+
alert("Successfully uninstalled all gems in #{install_dir}")
|
116
|
+
end
|
117
|
+
|
118
|
+
def uninstall_specific
|
90
119
|
deplist = Gem::DependencyList.new
|
120
|
+
|
91
121
|
get_all_gem_names.uniq.each do |name|
|
92
122
|
Gem::Specification.find_all_by_name(name).each do |spec|
|
93
123
|
deplist.add spec
|
@@ -56,23 +56,33 @@ class Gem::Commands::UpdateCommand < Gem::Command
|
|
56
56
|
"#{program_name} GEMNAME [GEMNAME ...]"
|
57
57
|
end
|
58
58
|
|
59
|
+
def check_latest_rubygems version # :nodoc:
|
60
|
+
if Gem.rubygems_version == version then
|
61
|
+
say "Latest version currently installed. Aborting."
|
62
|
+
terminate_interaction
|
63
|
+
end
|
64
|
+
|
65
|
+
options[:user_install] = false
|
66
|
+
end
|
67
|
+
|
68
|
+
def check_update_arguments # :nodoc:
|
69
|
+
unless options[:args].empty? then
|
70
|
+
alert_error "Gem names are not allowed with the --system option"
|
71
|
+
terminate_interaction 1
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
59
75
|
def execute
|
60
76
|
hig = {}
|
61
77
|
|
62
78
|
if options[:system] then
|
63
79
|
update_rubygems
|
64
80
|
return
|
65
|
-
|
66
|
-
say "Updating installed gems"
|
81
|
+
end
|
67
82
|
|
68
|
-
|
83
|
+
say "Updating installed gems"
|
69
84
|
|
70
|
-
|
71
|
-
if hig[spec.name].nil? or hig[spec.name].version < spec.version then
|
72
|
-
hig[spec.name] = spec
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
85
|
+
hig = highest_installed_gems
|
76
86
|
|
77
87
|
gems_to_update = which_to_update hig, options[:args].uniq
|
78
88
|
|
@@ -85,51 +95,65 @@ class Gem::Commands::UpdateCommand < Gem::Command
|
|
85
95
|
end
|
86
96
|
end
|
87
97
|
|
88
|
-
def
|
89
|
-
|
98
|
+
def fetch_remote_gems spec # :nodoc:
|
99
|
+
dependency = Gem::Dependency.new spec.name, "> #{spec.version}"
|
100
|
+
dependency.prerelease = options[:prerelease]
|
90
101
|
|
91
|
-
|
102
|
+
fetcher = Gem::SpecFetcher.fetcher
|
92
103
|
|
93
|
-
|
104
|
+
spec_tuples, _ = fetcher.search_for_dependency dependency
|
94
105
|
|
95
|
-
|
96
|
-
|
97
|
-
@installer.install name, Gem::Requirement.new(version)
|
98
|
-
success = true
|
99
|
-
rescue Gem::InstallError => e
|
100
|
-
alert_error "Error installing #{name}:\n\t#{e.message}"
|
101
|
-
success = false
|
102
|
-
end
|
106
|
+
spec_tuples
|
107
|
+
end
|
103
108
|
|
104
|
-
|
105
|
-
|
109
|
+
def highest_installed_gems # :nodoc:
|
110
|
+
hig = {} # highest installed gems
|
111
|
+
|
112
|
+
Gem::Specification.each do |spec|
|
113
|
+
if hig[spec.name].nil? or hig[spec.name].version < spec.version then
|
114
|
+
hig[spec.name] = spec
|
115
|
+
end
|
106
116
|
end
|
117
|
+
|
118
|
+
hig
|
107
119
|
end
|
108
120
|
|
109
|
-
def
|
110
|
-
|
111
|
-
|
121
|
+
def highest_remote_version spec # :nodoc:
|
122
|
+
spec_tuples = fetch_remote_gems spec
|
123
|
+
|
124
|
+
matching_gems = spec_tuples.select do |g,_|
|
125
|
+
g.name == spec.name and g.match_platform?
|
112
126
|
end
|
113
127
|
|
114
|
-
|
128
|
+
highest_remote_gem = matching_gems.sort_by { |g,_| g.version }.last
|
129
|
+
|
130
|
+
highest_remote_gem ||= [Gem::NameTuple.null]
|
131
|
+
|
132
|
+
highest_remote_gem.first.version
|
115
133
|
end
|
116
134
|
|
117
|
-
|
118
|
-
|
135
|
+
def install_rubygems version # :nodoc:
|
136
|
+
args = update_rubygems_arguments
|
119
137
|
|
120
|
-
|
121
|
-
unless options[:args].empty? then
|
122
|
-
alert_error "Gem names are not allowed with the --system option"
|
123
|
-
terminate_interaction 1
|
124
|
-
end
|
138
|
+
update_dir = File.join Gem.dir, 'gems', "rubygems-update-#{version}"
|
125
139
|
|
126
|
-
|
140
|
+
Dir.chdir update_dir do
|
141
|
+
say "Installing RubyGems #{version}"
|
127
142
|
|
128
|
-
|
129
|
-
|
143
|
+
# Make sure old rubygems isn't loaded
|
144
|
+
old = ENV["RUBYOPT"]
|
145
|
+
ENV.delete("RUBYOPT") if old
|
146
|
+
installed = system Gem.ruby, 'setup.rb', *args
|
147
|
+
say "RubyGems system software updated" if installed
|
148
|
+
ENV["RUBYOPT"] = old if old
|
149
|
+
end
|
150
|
+
end
|
130
151
|
|
152
|
+
def rubygems_target_version
|
131
153
|
version = options[:system]
|
132
|
-
|
154
|
+
update_latest = version == true
|
155
|
+
|
156
|
+
if update_latest then
|
133
157
|
version = Gem::Version.new Gem::VERSION
|
134
158
|
requirement = Gem::Requirement.new ">= #{Gem::VERSION}"
|
135
159
|
else
|
@@ -146,46 +170,72 @@ class Gem::Commands::UpdateCommand < Gem::Command
|
|
146
170
|
}
|
147
171
|
|
148
172
|
gems_to_update = which_to_update hig, options[:args], :system
|
149
|
-
|
150
|
-
current_ver = Gem.rubygems_version
|
173
|
+
_, up_ver = gems_to_update.first
|
151
174
|
|
152
|
-
target = if
|
175
|
+
target = if update_latest then
|
153
176
|
up_ver
|
154
177
|
else
|
155
178
|
version
|
156
179
|
end
|
157
180
|
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
181
|
+
return target, requirement
|
182
|
+
end
|
183
|
+
|
184
|
+
def update_gem name, version = Gem::Requirement.default
|
185
|
+
return if @updated.any? { |spec| spec.name == name }
|
186
|
+
|
187
|
+
@installer ||= Gem::DependencyInstaller.new options
|
188
|
+
|
189
|
+
success = false
|
190
|
+
|
191
|
+
say "Updating #{name}"
|
192
|
+
begin
|
193
|
+
@installer.install name, Gem::Requirement.new(version)
|
194
|
+
success = true
|
195
|
+
rescue Gem::InstallError => e
|
196
|
+
alert_error "Error installing #{name}:\n\t#{e.message}"
|
197
|
+
success = false
|
162
198
|
end
|
163
199
|
|
164
|
-
|
200
|
+
@installer.installed_gems.each do |spec|
|
201
|
+
@updated << spec
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
def update_gems gems_to_update
|
206
|
+
gems_to_update.uniq.sort.each do |(name, version)|
|
207
|
+
update_gem name, version
|
208
|
+
end
|
209
|
+
|
210
|
+
@updated
|
211
|
+
end
|
212
|
+
|
213
|
+
##
|
214
|
+
# Update RubyGems software to the latest version.
|
215
|
+
|
216
|
+
def update_rubygems
|
217
|
+
check_update_arguments
|
218
|
+
|
219
|
+
version, requirement = rubygems_target_version
|
220
|
+
|
221
|
+
check_latest_rubygems version
|
222
|
+
|
223
|
+
update_gem 'rubygems-update', version
|
165
224
|
|
166
225
|
installed_gems = Gem::Specification.find_all_by_name 'rubygems-update', requirement
|
167
226
|
version = installed_gems.last.version
|
168
227
|
|
228
|
+
install_rubygems version
|
229
|
+
end
|
230
|
+
|
231
|
+
def update_rubygems_arguments # :nodoc:
|
169
232
|
args = []
|
170
233
|
args << '--prefix' << Gem.prefix if Gem.prefix
|
171
234
|
# TODO use --document for >= 1.9 , --no-rdoc --no-ri < 1.9
|
172
235
|
args << '--no-rdoc' unless options[:document].include? 'rdoc'
|
173
236
|
args << '--no-ri' unless options[:document].include? 'ri'
|
174
237
|
args << '--no-format-executable' if options[:no_format_executable]
|
175
|
-
|
176
|
-
update_dir = File.join Gem.dir, 'gems', "rubygems-update-#{version}"
|
177
|
-
|
178
|
-
Dir.chdir update_dir do
|
179
|
-
say "Installing RubyGems #{version}"
|
180
|
-
setup_cmd = "#{Gem.ruby} setup.rb #{args.join ' '}"
|
181
|
-
|
182
|
-
# Make sure old rubygems isn't loaded
|
183
|
-
old = ENV["RUBYOPT"]
|
184
|
-
ENV.delete("RUBYOPT") if old
|
185
|
-
installed = system setup_cmd
|
186
|
-
say "RubyGems system software updated" if installed
|
187
|
-
ENV["RUBYOPT"] = old if old
|
188
|
-
end
|
238
|
+
args
|
189
239
|
end
|
190
240
|
|
191
241
|
def which_to_update highest_installed_gems, gem_names, system = false
|
@@ -195,21 +245,7 @@ class Gem::Commands::UpdateCommand < Gem::Command
|
|
195
245
|
next if not gem_names.empty? and
|
196
246
|
gem_names.all? { |name| /#{name}/ !~ l_spec.name }
|
197
247
|
|
198
|
-
|
199
|
-
dependency.prerelease = options[:prerelease]
|
200
|
-
|
201
|
-
fetcher = Gem::SpecFetcher.fetcher
|
202
|
-
|
203
|
-
spec_tuples, _ = fetcher.search_for_dependency dependency
|
204
|
-
|
205
|
-
matching_gems = spec_tuples.select do |g,_|
|
206
|
-
g.name == l_name and g.match_platform?
|
207
|
-
end
|
208
|
-
|
209
|
-
highest_remote_gem = matching_gems.sort_by { |g,_| g.version }.last
|
210
|
-
|
211
|
-
highest_remote_gem ||= [Gem::NameTuple.null]
|
212
|
-
highest_remote_ver = highest_remote_gem.first.version
|
248
|
+
highest_remote_ver = highest_remote_version l_spec
|
213
249
|
|
214
250
|
if system or (l_spec.version < highest_remote_ver) then
|
215
251
|
result << [l_spec.name, [l_spec.version, highest_remote_ver].max]
|
data/lib/rubygems/config_file.rb
CHANGED
@@ -5,7 +5,6 @@
|
|
5
5
|
#++
|
6
6
|
|
7
7
|
require 'rubygems/user_interaction'
|
8
|
-
require 'rbconfig'
|
9
8
|
|
10
9
|
##
|
11
10
|
# Gem::ConfigFile RubyGems options and gem command options from gemrc.
|
@@ -141,6 +140,11 @@ class Gem::ConfigFile
|
|
141
140
|
|
142
141
|
attr_reader :ssl_ca_cert
|
143
142
|
|
143
|
+
##
|
144
|
+
# Path name of directory or file of openssl client certificate, used for remote https connection with client authentication
|
145
|
+
|
146
|
+
attr_reader :ssl_client_cert
|
147
|
+
|
144
148
|
##
|
145
149
|
# Create the config file object. +args+ is the list of arguments
|
146
150
|
# from the command line.
|
@@ -211,6 +215,7 @@ class Gem::ConfigFile
|
|
211
215
|
|
212
216
|
@ssl_verify_mode = @hash[:ssl_verify_mode] if @hash.key? :ssl_verify_mode
|
213
217
|
@ssl_ca_cert = @hash[:ssl_ca_cert] if @hash.key? :ssl_ca_cert
|
218
|
+
@ssl_client_cert = @hash[:ssl_client_cert] if @hash.key? :ssl_client_cert
|
214
219
|
|
215
220
|
@api_keys = nil
|
216
221
|
@rubygems_api_key = nil
|
@@ -247,6 +252,10 @@ Your gem push credentials file located at:
|
|
247
252
|
|
248
253
|
has file permissions of 0#{existing_permissions.to_s 8} but 0600 is required.
|
249
254
|
|
255
|
+
To fix this error run:
|
256
|
+
|
257
|
+
\tchmod 0600 #{credentials_path}
|
258
|
+
|
250
259
|
You should reset your credentials at:
|
251
260
|
|
252
261
|
\thttps://rubygems.org/profile/edit
|
@@ -310,6 +319,9 @@ if you believe they were disclosed to a third party.
|
|
310
319
|
@rubygems_api_key = api_key
|
311
320
|
end
|
312
321
|
|
322
|
+
YAMLErrors = [ArgumentError]
|
323
|
+
YAMLErrors << Psych::SyntaxError if defined?(Psych::SyntaxError)
|
324
|
+
|
313
325
|
def load_file(filename)
|
314
326
|
Gem.load_yaml
|
315
327
|
|
@@ -322,8 +334,8 @@ if you believe they were disclosed to a third party.
|
|
322
334
|
return {}
|
323
335
|
end
|
324
336
|
return content
|
325
|
-
rescue
|
326
|
-
warn "Failed to load #{filename}"
|
337
|
+
rescue *YAMLErrors => e
|
338
|
+
warn "Failed to load #{filename}, #{e.to_s}"
|
327
339
|
rescue Errno::EACCES
|
328
340
|
warn "Failed to load #{filename} due to permissions problem."
|
329
341
|
end
|
@@ -8,8 +8,6 @@ require 'monitor'
|
|
8
8
|
|
9
9
|
module Kernel
|
10
10
|
|
11
|
-
RUBYGEMS_ACTIVATION_MONITOR = Monitor.new # :nodoc:
|
12
|
-
|
13
11
|
if defined?(gem_original_require) then
|
14
12
|
# Ruby ships with a custom_require, override its require
|
15
13
|
remove_method :require
|
@@ -35,10 +33,10 @@ module Kernel
|
|
35
33
|
# The normal <tt>require</tt> functionality of returning false if
|
36
34
|
# that file has already been loaded is preserved.
|
37
35
|
|
38
|
-
|
39
|
-
RUBYGEMS_ACTIVATION_MONITOR.enter
|
36
|
+
ACTIVATION_MONITOR = Monitor.new
|
40
37
|
|
41
|
-
|
38
|
+
def require path
|
39
|
+
ACTIVATION_MONITOR.enter
|
42
40
|
|
43
41
|
spec = Gem.find_unresolved_default_spec(path)
|
44
42
|
if spec
|
@@ -50,12 +48,7 @@ module Kernel
|
|
50
48
|
# normal require handle loading a gem from the rescue below.
|
51
49
|
|
52
50
|
if Gem::Specification.unresolved_deps.empty? then
|
53
|
-
|
54
|
-
RUBYGEMS_ACTIVATION_MONITOR.exit
|
55
|
-
return gem_original_require(path)
|
56
|
-
ensure
|
57
|
-
RUBYGEMS_ACTIVATION_MONITOR.enter
|
58
|
-
end
|
51
|
+
return gem_original_require(path)
|
59
52
|
end
|
60
53
|
|
61
54
|
# If +path+ is for a gem that has already been loaded, don't
|
@@ -64,16 +57,11 @@ module Kernel
|
|
64
57
|
#--
|
65
58
|
# TODO request access to the C implementation of this to speed up RubyGems
|
66
59
|
|
67
|
-
spec = Gem::Specification.find { |s|
|
60
|
+
spec = Gem::Specification.stubs.find { |s|
|
68
61
|
s.activated? and s.contains_requirable_file? path
|
69
62
|
}
|
70
63
|
|
71
|
-
|
72
|
-
RUBYGEMS_ACTIVATION_MONITOR.exit
|
73
|
-
return gem_original_require(path)
|
74
|
-
ensure
|
75
|
-
RUBYGEMS_ACTIVATION_MONITOR.enter
|
76
|
-
end if spec
|
64
|
+
return gem_original_require(path) if spec
|
77
65
|
|
78
66
|
# Attempt to find +path+ in any unresolved gems...
|
79
67
|
|
@@ -121,26 +109,16 @@ module Kernel
|
|
121
109
|
valid.activate
|
122
110
|
end
|
123
111
|
|
124
|
-
|
125
|
-
RUBYGEMS_ACTIVATION_MONITOR.exit
|
126
|
-
return gem_original_require(path)
|
127
|
-
ensure
|
128
|
-
RUBYGEMS_ACTIVATION_MONITOR.enter
|
129
|
-
end
|
112
|
+
gem_original_require path
|
130
113
|
rescue LoadError => load_error
|
131
114
|
if load_error.message.start_with?("Could not find") or
|
132
115
|
(load_error.message.end_with?(path) and Gem.try_activate(path)) then
|
133
|
-
|
134
|
-
RUBYGEMS_ACTIVATION_MONITOR.exit
|
135
|
-
return gem_original_require(path)
|
136
|
-
ensure
|
137
|
-
RUBYGEMS_ACTIVATION_MONITOR.enter
|
138
|
-
end
|
116
|
+
return gem_original_require(path)
|
139
117
|
end
|
140
118
|
|
141
119
|
raise load_error
|
142
120
|
ensure
|
143
|
-
|
121
|
+
ACTIVATION_MONITOR.exit
|
144
122
|
end
|
145
123
|
|
146
124
|
private :require
|