summaryrefslogtreecommitdiff
path: root/lib/rubygems/server.rb
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-02-22 02:52:35 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-02-22 02:52:35 +0000
commitb551e8c8b36766651be4e782e09e3b02e7d14a10 (patch)
treee164a1ef908bd4451568abf05b688f1593915b81 /lib/rubygems/server.rb
parent65544f575b25b18dc27f9364f973556ddb48538f (diff)
* lib/rubygems: update to 1.3.6.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26728 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rubygems/server.rb')
-rw-r--r--lib/rubygems/server.rb51
1 files changed, 41 insertions, 10 deletions
diff --git a/lib/rubygems/server.rb b/lib/rubygems/server.rb
index 44bee74abf..24c9e044e1 100644
--- a/lib/rubygems/server.rb
+++ b/lib/rubygems/server.rb
@@ -39,9 +39,9 @@ class Gem::Server
SEARCH = <<-SEARCH
<form class="headerSearch" name="headerSearchForm" method="get" action="/rdoc">
<div id="search" style="float:right">
- <span>Filter/Search</span>
- <input id="q" type="text" style="width:10em" name="q"/>
- <button type="submit" style="display:none" />
+ <label for="q">Filter/Search</label>
+ <input id="q" type="text" style="width:10em" name="q">
+ <button type="submit" style="display:none"></button>
</div>
</form>
SEARCH
@@ -426,15 +426,17 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
RDOC_SEARCH
def self.run(options)
- new(options[:gemdir], options[:port], options[:daemon]).run
+ new(options[:gemdir], options[:port], options[:daemon],
+ options[:addresses]).run
end
- def initialize(gem_dir, port, daemon)
+ def initialize(gem_dir, port, daemon, addresses = nil)
Socket.do_not_reverse_lookup = true
@gem_dir = gem_dir
@port = port
@daemon = daemon
+ @addresses = addresses
logger = WEBrick::Log.new nil, WEBrick::BasicLog::FATAL
@server = WEBrick::HTTPServer.new :DoNotListen => true, :Logger => logger
@@ -498,6 +500,37 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
end
end
+ ##
+ # Creates server sockets based on the addresses option. If no addresses
+ # were given a server socket for all interfaces is created.
+
+ def listen addresses = @addresses
+ addresses = [nil] unless addresses
+
+ listeners = 0
+
+ addresses.each do |address|
+ begin
+ @server.listen address, @port
+ @server.listeners[listeners..-1].each do |listener|
+ host, port = listener.addr.values_at 2, 1
+ host = "[#{host}]" if host =~ /:/ # we don't reverse lookup
+ say "Server started at http://#{host}:#{port}"
+ end
+
+ listeners = @server.listeners.length
+ rescue SystemCallError
+ next
+ end
+ end
+
+ if @server.listeners.empty? then
+ say "Unable to start a server."
+ say "Check for running servers or your --bind and --port arguments"
+ terminate_interaction 1
+ end
+ end
+
def quick(req, res)
@source_index.refresh!
@@ -566,7 +599,7 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
deps = spec.dependencies.map do |dep|
{ "name" => dep.name,
"type" => dep.type,
- "version" => dep.version_requirements.to_s, }
+ "version" => dep.requirement.to_s, }
end
deps = deps.sort_by { |dep| [dep["name"].downcase, dep["version"]] }
@@ -602,7 +635,7 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
"only_one_executable" => true,
"full_name" => "rubygems-#{Gem::RubyGemsVersion}",
"has_deps" => false,
- "homepage" => "http://rubygems.org/",
+ "homepage" => "http://docs.rubygems.org/",
"name" => 'rubygems',
"rdoc_installed" => true,
"summary" => "RubyGems itself",
@@ -716,9 +749,7 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
end
def run
- @server.listen nil, @port
-
- say "Starting gem server on http://localhost:#{@port}/"
+ listen
WEBrick::Daemon.start if @daemon