rubygems-update 1.3.5 → 1.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rubygems-update might be problematic. Click here for more details.
- data.tar.gz.sig +0 -0
- data/.autotest +8 -1
- data/ChangeLog +164 -0
- data/History.txt +52 -1
- data/Manifest.txt +8 -8
- data/README +3 -2
- data/Rakefile +49 -5
- data/bin/gem +2 -2
- data/bin/update_rubygems +9 -11
- data/cruise_config.rb +4 -3
- data/hide_lib_for_update/note.txt +5 -0
- data/lib/rbconfig/datadir.rb +10 -14
- data/lib/rubygems.rb +117 -140
- data/lib/rubygems/builder.rb +4 -2
- data/lib/rubygems/command.rb +51 -48
- data/lib/rubygems/command_manager.rb +2 -0
- data/lib/rubygems/commands/dependency_command.rb +10 -5
- data/lib/rubygems/commands/environment_command.rb +1 -1
- data/lib/rubygems/commands/fetch_command.rb +6 -5
- data/lib/rubygems/commands/install_command.rb +1 -0
- data/lib/rubygems/commands/mirror_command.rb +8 -8
- data/lib/rubygems/commands/owner_command.rb +75 -0
- data/lib/rubygems/commands/pristine_command.rb +1 -1
- data/lib/rubygems/commands/push_command.rb +45 -0
- data/lib/rubygems/commands/query_command.rb +4 -1
- data/lib/rubygems/commands/rdoc_command.rb +24 -9
- data/lib/rubygems/commands/server_command.rb +6 -0
- data/lib/rubygems/commands/setup_command.rb +14 -4
- data/lib/rubygems/commands/unpack_command.rb +2 -2
- data/lib/rubygems/commands/update_command.rb +2 -2
- data/lib/rubygems/commands/which_command.rb +7 -9
- data/lib/rubygems/config_file.rb +100 -26
- data/lib/rubygems/defaults.rb +1 -1
- data/lib/rubygems/dependency.rb +133 -75
- data/lib/rubygems/dependency_installer.rb +28 -10
- data/lib/rubygems/dependency_list.rb +41 -12
- data/lib/rubygems/doc_manager.rb +7 -0
- data/lib/rubygems/format.rb +16 -20
- data/lib/rubygems/gem_openssl.rb +1 -1
- data/lib/rubygems/gem_path_searcher.rb +10 -12
- data/lib/rubygems/gemcutter_utilities.rb +49 -0
- data/lib/rubygems/indexer.rb +2 -2
- data/lib/rubygems/install_update_options.rb +1 -9
- data/lib/rubygems/installer.rb +35 -76
- data/lib/rubygems/local_remote_options.rb +1 -2
- data/lib/rubygems/package.rb +0 -1
- data/lib/rubygems/package/tar_input.rb +3 -1
- data/lib/rubygems/package_task.rb +16 -11
- data/lib/rubygems/remote_fetcher.rb +22 -8
- data/lib/rubygems/requirement.rb +78 -100
- data/lib/rubygems/server.rb +41 -10
- data/lib/rubygems/source_index.rb +5 -5
- data/lib/rubygems/spec_fetcher.rb +2 -2
- data/lib/rubygems/specification.rb +66 -16
- data/lib/rubygems/test_utilities.rb +33 -4
- data/lib/rubygems/uninstaller.rb +3 -3
- data/lib/rubygems/user_interaction.rb +45 -0
- data/lib/rubygems/validator.rb +6 -7
- data/lib/rubygems/version.rb +206 -149
- data/lib/rubygems/version_option.rb +16 -0
- data/test/fake_certlib/openssl.rb +1 -1
- data/test/functional.rb +0 -7
- data/test/gem_installer_test_case.rb +4 -4
- data/test/gem_package_tar_test_case.rb +1 -1
- data/test/gemutilities.rb +35 -31
- data/test/insure_session.rb +0 -8
- data/test/mockgemui.rb +0 -8
- data/test/simple_gem.rb +2 -8
- data/test/test_config.rb +3 -10
- data/test/test_gem.rb +9 -14
- data/test/test_gem_builder.rb +1 -7
- data/test/test_gem_command.rb +1 -8
- data/test/test_gem_command_manager.rb +1 -7
- data/test/test_gem_commands_build_command.rb +4 -4
- data/test/test_gem_commands_cert_command.rb +1 -2
- data/test/test_gem_commands_check_command.rb +1 -7
- data/test/test_gem_commands_contents_command.rb +1 -1
- data/test/test_gem_commands_dependency_command.rb +17 -31
- data/test/test_gem_commands_environment_command.rb +1 -1
- data/test/test_gem_commands_fetch_command.rb +14 -12
- data/test/test_gem_commands_generate_index_command.rb +1 -1
- data/test/test_gem_commands_install_command.rb +22 -20
- data/test/test_gem_commands_list_command.rb +1 -1
- data/test/test_gem_commands_lock_command.rb +1 -1
- data/test/test_gem_commands_mirror_command.rb +5 -5
- data/test/test_gem_commands_outdated_command.rb +3 -5
- data/test/test_gem_commands_owner_command.rb +105 -0
- data/test/test_gem_commands_pristine_command.rb +2 -2
- data/test/test_gem_commands_push_command.rb +61 -0
- data/test/test_gem_commands_query_command.rb +23 -56
- data/test/test_gem_commands_server_command.rb +1 -1
- data/test/test_gem_commands_sources_command.rb +1 -70
- data/test/test_gem_commands_specification_command.rb +3 -4
- data/test/test_gem_commands_stale_command.rb +1 -1
- data/test/test_gem_commands_uninstall_command.rb +3 -4
- data/test/test_gem_commands_unpack_command.rb +1 -1
- data/test/test_gem_commands_update_command.rb +13 -13
- data/test/test_gem_commands_which_command.rb +66 -0
- data/test/test_gem_config_file.rb +13 -7
- data/test/test_gem_dependency.rb +82 -134
- data/test/test_gem_dependency_installer.rb +55 -30
- data/test/test_gem_dependency_list.rb +28 -7
- data/test/test_gem_doc_manager.rb +1 -7
- data/test/test_gem_ext_configure_builder.rb +2 -2
- data/test/test_gem_ext_ext_conf_builder.rb +1 -1
- data/test/test_gem_ext_rake_builder.rb +1 -1
- data/test/test_gem_format.rb +14 -11
- data/test/test_gem_gem_path_searcher.rb +12 -1
- data/test/test_gem_gem_runner.rb +1 -1
- data/test/test_gem_gemcutter_utilities.rb +103 -0
- data/test/test_gem_indexer.rb +44 -51
- data/test/test_gem_install_update_options.rb +1 -7
- data/test/test_gem_installer.rb +22 -82
- data/test/test_gem_local_remote_options.rb +1 -1
- data/test/test_gem_package_tar_header.rb +1 -8
- data/test/test_gem_package_tar_input.rb +1 -8
- data/test/test_gem_package_tar_output.rb +1 -8
- data/test/test_gem_package_tar_reader.rb +1 -8
- data/test/test_gem_package_tar_reader_entry.rb +1 -8
- data/test/test_gem_package_tar_writer.rb +1 -8
- data/test/test_gem_package_task.rb +1 -25
- data/test/test_gem_platform.rb +4 -4
- data/test/test_gem_remote_fetcher.rb +31 -21
- data/test/test_gem_requirement.rb +210 -140
- data/test/test_gem_server.rb +36 -1
- data/test/test_gem_source_index.rb +7 -13
- data/test/test_gem_spec_fetcher.rb +17 -47
- data/test/test_gem_specification.rb +7 -20
- data/test/test_gem_stream_ui.rb +21 -1
- data/test/test_gem_uninstaller.rb +1 -2
- data/test/test_gem_validator.rb +2 -8
- data/test/test_gem_version.rb +110 -254
- data/test/test_gem_version_option.rb +1 -1
- data/test/test_kernel.rb +1 -7
- data/util/CL2notes +1 -1
- data/util/gem_prelude.rb.template +64 -41
- metadata +33 -71
- metadata.gz.sig +0 -0
- data/lib/rubygems/digest/digest_adapter.rb +0 -49
- data/lib/rubygems/digest/md5.rb +0 -23
- data/lib/rubygems/digest/sha1.rb +0 -22
- data/lib/rubygems/digest/sha2.rb +0 -22
- data/lib/rubygems/timer.rb +0 -28
- data/test/test_gem_digest.rb +0 -46
- data/test/test_gem_source_info_cache.rb +0 -447
- data/test/test_gem_source_info_cache_entry.rb +0 -78
@@ -101,10 +101,9 @@ module Gem::LocalRemoteOptions
|
|
101
101
|
end
|
102
102
|
|
103
103
|
##
|
104
|
-
# Add the --update-
|
104
|
+
# Add the --update-sources option
|
105
105
|
|
106
106
|
def add_update_sources_option
|
107
|
-
|
108
107
|
add_option(:"Local/Remote", '-u', '--[no-]update-sources',
|
109
108
|
'Update local source cache') do |value, options|
|
110
109
|
Gem.configuration.update_sources = value
|
data/lib/rubygems/package.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- coding: iso-8859-1 -*-
|
1
2
|
#++
|
2
3
|
# Copyright (C) 2004 Mauricio Julio Fern�ndez Pradier
|
3
4
|
# See LICENSE.txt for additional licensing information.
|
@@ -199,7 +200,8 @@ class Gem::Package::TarInput
|
|
199
200
|
# times. And that's the way it is.
|
200
201
|
|
201
202
|
def zipped_stream(entry)
|
202
|
-
if defined? Rubinius then
|
203
|
+
if defined? Rubinius or defined? Maglev then
|
204
|
+
# these implementations have working Zlib
|
203
205
|
zis = Zlib::GzipReader.new entry
|
204
206
|
dis = zis.read
|
205
207
|
is = StringIO.new(dis)
|
@@ -97,22 +97,27 @@ class Gem::PackageTask < Rake::PackageTask
|
|
97
97
|
|
98
98
|
def define
|
99
99
|
super
|
100
|
+
|
100
101
|
task :package => [:gem]
|
102
|
+
|
103
|
+
gem_file = gem_spec.file_name
|
104
|
+
gem_path = File.join package_dir, gem_file
|
105
|
+
|
101
106
|
desc "Build the gem file #{gem_file}"
|
102
|
-
task :gem => [
|
103
|
-
|
104
|
-
|
107
|
+
task :gem => [gem_path]
|
108
|
+
|
109
|
+
trace = Rake.application.options.trace
|
110
|
+
Gem.configuration.verbose = trace
|
111
|
+
|
112
|
+
file gem_path => [package_dir] + @gem_spec.files do
|
113
|
+
when_writing "Creating #{gem_spec.file_name}" do
|
105
114
|
Gem::Builder.new(gem_spec).build
|
106
|
-
verbose
|
107
|
-
mv gem_file,
|
108
|
-
|
109
|
-
|
115
|
+
verbose trace do
|
116
|
+
mv gem_file, gem_path
|
117
|
+
end
|
118
|
+
end
|
110
119
|
end
|
111
120
|
end
|
112
121
|
|
113
|
-
def gem_file
|
114
|
-
"#{@gem_spec.full_name}.gem"
|
115
|
-
end
|
116
|
-
|
117
122
|
end
|
118
123
|
|
@@ -81,7 +81,7 @@ class Gem::RemoteFetcher
|
|
81
81
|
cache_dir = File.join(Gem.user_dir, 'cache')
|
82
82
|
end
|
83
83
|
|
84
|
-
gem_file_name =
|
84
|
+
gem_file_name = spec.file_name
|
85
85
|
local_gem_path = File.join cache_dir, gem_file_name
|
86
86
|
|
87
87
|
FileUtils.mkdir_p cache_dir rescue nil unless File.exist? cache_dir
|
@@ -138,12 +138,18 @@ class Gem::RemoteFetcher
|
|
138
138
|
say "Using local gem #{local_gem_path}" if
|
139
139
|
Gem.configuration.really_verbose
|
140
140
|
when nil then # TODO test for local overriding cache
|
141
|
+
source_path = if Gem.win_platform? && source_uri.scheme &&
|
142
|
+
!source_uri.path.include?(':') then
|
143
|
+
"#{source_uri.scheme}:#{source_uri.path}"
|
144
|
+
else
|
145
|
+
source_uri.path
|
146
|
+
end
|
147
|
+
|
148
|
+
source_path = URI.unescape source_path
|
149
|
+
|
141
150
|
begin
|
142
|
-
|
143
|
-
|
144
|
-
else
|
145
|
-
FileUtils.cp URI.unescape(source_uri.path), local_gem_path
|
146
|
-
end
|
151
|
+
FileUtils.cp source_path, local_gem_path unless
|
152
|
+
File.expand_path(source_path) == File.expand_path(local_gem_path)
|
147
153
|
rescue Errno::EACCES
|
148
154
|
local_gem_path = source_uri.to_s
|
149
155
|
end
|
@@ -317,6 +323,8 @@ class Gem::RemoteFetcher
|
|
317
323
|
request.add_field 'If-Modified-Since', last_modified.rfc2822
|
318
324
|
end
|
319
325
|
|
326
|
+
yield request if block_given?
|
327
|
+
|
320
328
|
connection = connection_for uri
|
321
329
|
|
322
330
|
retried = false
|
@@ -324,10 +332,16 @@ class Gem::RemoteFetcher
|
|
324
332
|
|
325
333
|
begin
|
326
334
|
@requests[connection.object_id] += 1
|
335
|
+
|
336
|
+
say "#{request.method} #{uri}" if
|
337
|
+
Gem.configuration.really_verbose
|
327
338
|
response = connection.request request
|
328
|
-
say "#{
|
339
|
+
say "#{response.code} #{response.message}" if
|
329
340
|
Gem.configuration.really_verbose
|
341
|
+
|
330
342
|
rescue Net::HTTPBadResponse
|
343
|
+
say "bad response" if Gem.configuration.really_verbose
|
344
|
+
|
331
345
|
reset connection
|
332
346
|
|
333
347
|
raise FetchError.new('too many bad responses', uri) if bad_response
|
@@ -337,7 +351,7 @@ class Gem::RemoteFetcher
|
|
337
351
|
# HACK work around EOFError bug in Net::HTTP
|
338
352
|
# NOTE Errno::ECONNABORTED raised a lot on Windows, and make impossible
|
339
353
|
# to install gems.
|
340
|
-
rescue EOFError, Errno::ECONNABORTED, Errno::ECONNRESET
|
354
|
+
rescue EOFError, Errno::ECONNABORTED, Errno::ECONNRESET, Errno::EPIPE
|
341
355
|
requests = @requests[connection.object_id]
|
342
356
|
say "connection reset after #{requests} requests, retrying" if
|
343
357
|
Gem.configuration.really_verbose
|
data/lib/rubygems/requirement.rb
CHANGED
@@ -1,41 +1,33 @@
|
|
1
|
-
|
2
|
-
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
|
3
|
-
# All rights reserved.
|
4
|
-
# See LICENSE.txt for permissions.
|
5
|
-
#++
|
1
|
+
require "rubygems/version"
|
6
2
|
|
7
3
|
##
|
8
|
-
# Requirement
|
9
|
-
#
|
10
|
-
#
|
11
|
-
# A Requirement object can actually contain multiple, er,
|
12
|
-
# requirements, as in (> 1.2, < 2.0).
|
4
|
+
# A Requirement is a set of one or more version restrictions. It supports a
|
5
|
+
# few (<tt>=, !=, >, <, >=, <=, ~></tt>) different restriction operators.
|
13
6
|
|
14
7
|
class Gem::Requirement
|
15
|
-
|
16
8
|
include Comparable
|
17
9
|
|
18
|
-
|
19
|
-
|
20
|
-
OPS = {
|
10
|
+
OPS = { #:nodoc:
|
21
11
|
"=" => lambda { |v, r| v == r },
|
22
12
|
"!=" => lambda { |v, r| v != r },
|
23
|
-
">" => lambda { |v, r| v > r
|
24
|
-
"<" => lambda { |v, r| v < r
|
13
|
+
">" => lambda { |v, r| v > r },
|
14
|
+
"<" => lambda { |v, r| v < r },
|
25
15
|
">=" => lambda { |v, r| v >= r },
|
26
16
|
"<=" => lambda { |v, r| v <= r },
|
27
17
|
"~>" => lambda { |v, r| v = v.release; v >= r && v < r.bump }
|
28
18
|
}
|
29
19
|
|
30
|
-
|
20
|
+
quoted = OPS.keys.map { |k| Regexp.quote k }.join "|"
|
21
|
+
PATTERN = /\A\s*(#{quoted})?\s*(#{Gem::Version::VERSION_PATTERN})\s*\z/
|
31
22
|
|
32
23
|
##
|
33
|
-
# Factory method to create a Gem::Requirement object. Input may be
|
34
|
-
# Version, a String, or nil. Intended to simplify client code.
|
24
|
+
# Factory method to create a Gem::Requirement object. Input may be
|
25
|
+
# a Version, a String, or nil. Intended to simplify client code.
|
35
26
|
#
|
36
|
-
# If the input is "weird", the default version requirement is
|
27
|
+
# If the input is "weird", the default version requirement is
|
28
|
+
# returned.
|
37
29
|
|
38
|
-
def self.create
|
30
|
+
def self.create input
|
39
31
|
case input
|
40
32
|
when Gem::Requirement then
|
41
33
|
input
|
@@ -43,9 +35,9 @@ class Gem::Requirement
|
|
43
35
|
new input
|
44
36
|
else
|
45
37
|
if input.respond_to? :to_str then
|
46
|
-
|
38
|
+
new [input.to_str]
|
47
39
|
else
|
48
|
-
|
40
|
+
default
|
49
41
|
end
|
50
42
|
end
|
51
43
|
end
|
@@ -58,113 +50,99 @@ class Gem::Requirement
|
|
58
50
|
# "A default "version requirement" can surely _only_ be '> 0'."
|
59
51
|
|
60
52
|
def self.default
|
61
|
-
|
53
|
+
new '>= 0'
|
62
54
|
end
|
63
55
|
|
64
56
|
##
|
65
|
-
#
|
66
|
-
#
|
67
|
-
#
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
else
|
76
|
-
[parse(requirements)]
|
77
|
-
end
|
78
|
-
@version = nil # Avoid warnings.
|
79
|
-
end
|
57
|
+
# Parse +obj+, returning an <tt>[op, version]</tt> pair. +obj+ can
|
58
|
+
# be a String or a Gem::Version.
|
59
|
+
#
|
60
|
+
# If +obj+ is a String, it can be either a full requirement
|
61
|
+
# specification, like <tt>">= 1.2"</tt>, or a simple version number,
|
62
|
+
# like <tt>"1.2"</tt>.
|
63
|
+
#
|
64
|
+
# parse("> 1.0") # => [">", "1.0"]
|
65
|
+
# parse("1.0") # => ["=", "1.0"]
|
66
|
+
# parse(Gem::Version.new("1.0")) # => ["=, "1.0"]
|
80
67
|
|
81
|
-
|
82
|
-
|
68
|
+
def self.parse obj
|
69
|
+
return ["=", obj] if Gem::Version === obj
|
83
70
|
|
84
|
-
|
85
|
-
|
71
|
+
unless PATTERN =~ obj.to_s
|
72
|
+
raise ArgumentError, "Illformed requirement [#{obj.inspect}]"
|
73
|
+
end
|
74
|
+
|
75
|
+
[$1 || "=", Gem::Version.new($2)]
|
86
76
|
end
|
87
77
|
|
88
78
|
##
|
89
|
-
#
|
79
|
+
# An array of requirement pairs. The first element of the pair is
|
80
|
+
# the op, and the second is the Gem::Version.
|
90
81
|
|
91
|
-
|
92
|
-
|
93
|
-
|
82
|
+
attr_reader :requirements #:nodoc:
|
83
|
+
|
84
|
+
##
|
85
|
+
# Constructs a requirement from +requirements+. Requirements can be
|
86
|
+
# Strings, Gem::Versions, or Arrays of those. +nil+ and duplicate
|
87
|
+
# requirements are ignored. An empty set of +requirements+ is the
|
88
|
+
# same as <tt>">= 0"</tt>.
|
89
|
+
|
90
|
+
def initialize *requirements
|
91
|
+
requirements = requirements.flatten
|
92
|
+
requirements.compact!
|
93
|
+
requirements.uniq!
|
94
|
+
|
95
|
+
requirements << ">= 0" if requirements.empty?
|
96
|
+
@requirements = requirements.map! { |r| self.class.parse r }
|
94
97
|
end
|
95
98
|
|
96
|
-
def
|
97
|
-
|
99
|
+
def as_list # :nodoc:
|
100
|
+
requirements.map { |op, version| "#{op} #{version}" }
|
98
101
|
end
|
99
102
|
|
100
|
-
def
|
101
|
-
|
102
|
-
q.pp as_list
|
103
|
-
end
|
103
|
+
def hash # :nodoc:
|
104
|
+
requirements.hash
|
104
105
|
end
|
105
106
|
|
106
|
-
def
|
107
|
-
|
108
|
-
@requirements.map do |op, version| "#{op} #{version}" end
|
107
|
+
def marshal_dump # :nodoc:
|
108
|
+
[@requirements]
|
109
109
|
end
|
110
110
|
|
111
|
-
def
|
112
|
-
|
113
|
-
@requirements = [parse(@version)]
|
114
|
-
@nums = nil
|
115
|
-
@version = nil
|
116
|
-
@op = nil
|
111
|
+
def marshal_load array # :nodoc:
|
112
|
+
@requirements = array[0]
|
117
113
|
end
|
118
114
|
|
119
|
-
|
120
|
-
|
115
|
+
def prerelease?
|
116
|
+
requirements.any? { |r| r.last.prerelease? }
|
117
|
+
end
|
121
118
|
|
122
|
-
def
|
123
|
-
|
124
|
-
|
119
|
+
def pretty_print q # :nodoc:
|
120
|
+
q.group 1, 'Gem::Requirement.new(', ')' do
|
121
|
+
q.pp as_list
|
122
|
+
end
|
125
123
|
end
|
126
124
|
|
127
125
|
##
|
128
|
-
#
|
126
|
+
# True if +version+ satisfies this Requirement.
|
129
127
|
|
130
|
-
def
|
131
|
-
OPS[op].call
|
132
|
-
end
|
133
|
-
|
134
|
-
def prerelease?
|
135
|
-
# TODO: why is @requirements a nested array?
|
136
|
-
@requirements.any?{ |r| r[1].prerelease? }
|
128
|
+
def satisfied_by? version
|
129
|
+
requirements.all? { |op, rv| OPS[op].call version, rv }
|
137
130
|
end
|
138
131
|
|
139
|
-
|
140
|
-
|
141
|
-
#
|
142
|
-
# The requirement can be a String or a Gem::Version. A String can be an
|
143
|
-
# operator (<, <=, =, >=, >, !=, ~>), a version number, or both, operator
|
144
|
-
# first.
|
145
|
-
|
146
|
-
def parse(obj)
|
147
|
-
case obj
|
148
|
-
when /^\s*(#{OP_RE})\s*(#{Gem::Version::VERSION_PATTERN})\s*$/o then
|
149
|
-
[$1, Gem::Version.new($2)]
|
150
|
-
when /^\s*(#{Gem::Version::VERSION_PATTERN})\s*$/o then
|
151
|
-
['=', Gem::Version.new($1)]
|
152
|
-
when /^\s*(#{OP_RE})\s*$/o then
|
153
|
-
[$1, Gem::Version.new('0')]
|
154
|
-
when Gem::Version then
|
155
|
-
['=', obj]
|
156
|
-
else
|
157
|
-
fail ArgumentError, "Illformed requirement [#{obj.inspect}]"
|
158
|
-
end
|
132
|
+
def to_s # :nodoc:
|
133
|
+
as_list.join ", "
|
159
134
|
end
|
160
135
|
|
161
|
-
def <=>
|
136
|
+
def <=> other # :nodoc:
|
162
137
|
to_s <=> other.to_s
|
163
138
|
end
|
139
|
+
end
|
164
140
|
|
165
|
-
|
166
|
-
|
167
|
-
|
141
|
+
# :stopdoc:
|
142
|
+
# Gem::Version::Requirement is used in a lot of old YAML specs. It's aliased
|
143
|
+
# here for backwards compatibility. I'd like to remove this, maybe in RubyGems
|
144
|
+
# 2.0.
|
168
145
|
|
169
|
-
|
146
|
+
::Gem::Version::Requirement = ::Gem::Requirement
|
147
|
+
# :startdoc:
|
170
148
|
|
data/lib/rubygems/server.rb
CHANGED
@@ -39,9 +39,9 @@ class Gem::Server
|
|
39
39
|
SEARCH = <<-SEARCH
|
40
40
|
<form class="headerSearch" name="headerSearchForm" method="get" action="/rdoc">
|
41
41
|
<div id="search" style="float:right">
|
42
|
-
<
|
43
|
-
<input id="q" type="text" style="width:10em" name="q"
|
44
|
-
<button type="submit" style="display:none"
|
42
|
+
<label for="q">Filter/Search</label>
|
43
|
+
<input id="q" type="text" style="width:10em" name="q">
|
44
|
+
<button type="submit" style="display:none"></button>
|
45
45
|
</div>
|
46
46
|
</form>
|
47
47
|
SEARCH
|
@@ -426,15 +426,17 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
|
426
426
|
RDOC_SEARCH
|
427
427
|
|
428
428
|
def self.run(options)
|
429
|
-
new(options[:gemdir], options[:port], options[:daemon]
|
429
|
+
new(options[:gemdir], options[:port], options[:daemon],
|
430
|
+
options[:addresses]).run
|
430
431
|
end
|
431
432
|
|
432
|
-
def initialize(gem_dir, port, daemon)
|
433
|
+
def initialize(gem_dir, port, daemon, addresses = nil)
|
433
434
|
Socket.do_not_reverse_lookup = true
|
434
435
|
|
435
436
|
@gem_dir = gem_dir
|
436
437
|
@port = port
|
437
438
|
@daemon = daemon
|
439
|
+
@addresses = addresses
|
438
440
|
logger = WEBrick::Log.new nil, WEBrick::BasicLog::FATAL
|
439
441
|
@server = WEBrick::HTTPServer.new :DoNotListen => true, :Logger => logger
|
440
442
|
|
@@ -498,6 +500,37 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
|
498
500
|
end
|
499
501
|
end
|
500
502
|
|
503
|
+
##
|
504
|
+
# Creates server sockets based on the addresses option. If no addresses
|
505
|
+
# were given a server socket for all interfaces is created.
|
506
|
+
|
507
|
+
def listen addresses = @addresses
|
508
|
+
addresses = [nil] unless addresses
|
509
|
+
|
510
|
+
listeners = 0
|
511
|
+
|
512
|
+
addresses.each do |address|
|
513
|
+
begin
|
514
|
+
@server.listen address, @port
|
515
|
+
@server.listeners[listeners..-1].each do |listener|
|
516
|
+
host, port = listener.addr.values_at 2, 1
|
517
|
+
host = "[#{host}]" if host =~ /:/ # we don't reverse lookup
|
518
|
+
say "Server started at http://#{host}:#{port}"
|
519
|
+
end
|
520
|
+
|
521
|
+
listeners = @server.listeners.length
|
522
|
+
rescue SystemCallError
|
523
|
+
next
|
524
|
+
end
|
525
|
+
end
|
526
|
+
|
527
|
+
if @server.listeners.empty? then
|
528
|
+
say "Unable to start a server."
|
529
|
+
say "Check for running servers or your --bind and --port arguments"
|
530
|
+
terminate_interaction 1
|
531
|
+
end
|
532
|
+
end
|
533
|
+
|
501
534
|
def quick(req, res)
|
502
535
|
@source_index.refresh!
|
503
536
|
|
@@ -566,7 +599,7 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
|
566
599
|
deps = spec.dependencies.map do |dep|
|
567
600
|
{ "name" => dep.name,
|
568
601
|
"type" => dep.type,
|
569
|
-
"version" => dep.
|
602
|
+
"version" => dep.requirement.to_s, }
|
570
603
|
end
|
571
604
|
|
572
605
|
deps = deps.sort_by { |dep| [dep["name"].downcase, dep["version"]] }
|
@@ -602,7 +635,7 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
|
602
635
|
"only_one_executable" => true,
|
603
636
|
"full_name" => "rubygems-#{Gem::RubyGemsVersion}",
|
604
637
|
"has_deps" => false,
|
605
|
-
"homepage" => "http://rubygems.org/",
|
638
|
+
"homepage" => "http://docs.rubygems.org/",
|
606
639
|
"name" => 'rubygems',
|
607
640
|
"rdoc_installed" => true,
|
608
641
|
"summary" => "RubyGems itself",
|
@@ -716,9 +749,7 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
|
716
749
|
end
|
717
750
|
|
718
751
|
def run
|
719
|
-
|
720
|
-
|
721
|
-
say "Starting gem server on http://localhost:#{@port}/"
|
752
|
+
listen
|
722
753
|
|
723
754
|
WEBrick::Daemon.start if @daemon
|
724
755
|
|