Class: Gem::Commands::ServerCommand

Inherits:
Gem::Command show all
Extended by:
Deprecate
Defined in:
lib/rubygems/commands/server_command.rb

Instance Attribute Summary

Attributes inherited from Gem::Command

#command, #defaults, #options, #program_name, #summary

Instance Method Summary collapse

Methods included from Deprecate

deprecate, next_rubygems_major_version, rubygems_deprecate, rubygems_deprecate_command, skip, skip=, skip_during

Methods inherited from Gem::Command

add_common_option, #add_extra_args, #add_option, add_specific_extra_args, #arguments, #begins?, build_args, build_args=, #check_deprecated_options, common_options, #deprecate_option, #deprecated?, extra_args, extra_args=, #get_all_gem_names, #get_all_gem_names_and_versions, #get_one_gem_name, #get_one_optional_argument, #handle_options, #handles?, #invoke, #invoke_with_build_args, #merge_options, #remove_option, #show_help, #show_lookup_failure, specific_extra_args, specific_extra_args_hash, specific_extra_args_hash=, #usage, #when_invoked

Methods included from UserInteraction

#alert, #alert_error, #alert_warning, #ask, #ask_for_password, #ask_yes_no, #choose_from_list, #say, #terminate_interaction, #verbose

Methods included from DefaultUserInteraction

ui, #ui, ui=, #ui=, use_ui, #use_ui

Methods included from Text

#clean_text, #format_text, #levenshtein_distance, #min3, #truncate_text

Constructor Details

#initializeServerCommand

Returns a new instance of ServerCommand.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/rubygems/commands/server_command.rb', line 10

def initialize
  super 'server', 'Documentation and gem repository HTTP server',
        :port => 8808, :gemdir => [], :daemon => false

  OptionParser.accept :Port do |port|
    if port =~ /\A\d+\z/
      port = Integer port
      raise OptionParser::InvalidArgument, "#{port}: not a port number" if
        port > 65535

      port
    else
      begin
        Socket.getservbyname port
      rescue SocketError
        raise OptionParser::InvalidArgument, "#{port}: no such named service"
      end
    end
  end

  add_option '-p', '--port=PORT', :Port,
             'port to listen on' do |port, options|
    options[:port] = port
  end

  add_option '-d', '--dir=GEMDIR',
             'directories from which to serve gems',
             'multiple directories may be provided' do |gemdir, options|
    options[:gemdir] << File.expand_path(gemdir)
  end

  add_option '--[no-]daemon', 'run as a daemon' do |daemon, options|
    options[:daemon] = daemon
  end

  add_option '-b', '--bind=HOST,HOST',
             'addresses to bind', Array do |address, options|
    options[:addresses] ||= []
    options[:addresses].push(*address)
  end

  add_option '-l', '--launch[=COMMAND]',
             'launches a browser window',
             "COMMAND defaults to 'start' on Windows",
             "and 'open' on all other platforms" do |launch, options|
    launch ||= Gem.win_platform? ? 'start' : 'open'
    options[:launch] = launch
  end
end

Instance Method Details

#defaults_strObject

:nodoc:



60
61
62
# File 'lib/rubygems/commands/server_command.rb', line 60

def defaults_str # :nodoc:
  "--port 8808 --dir #{Gem.dir} --no-daemon"
end

#descriptionObject

:nodoc:



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/rubygems/commands/server_command.rb', line 64

def description # :nodoc:
  <<-EOF
The server command starts up a web server that hosts the RDoc for your
installed gems and can operate as a server for installation of gems on other
machines.

The cache files for installed gems must exist to use the server as a source
for gem installation.

To install gems from a running server, use `gem install GEMNAME --source
http://gem_server_host:8808`

You can set up a shortcut to gem server documentation using the URL:

http://localhost:8808/rdoc?q=%s - Firefox
http://localhost:8808/rdoc?q=* - LaunchBar

  EOF
end

#executeObject



84
85
86
87
# File 'lib/rubygems/commands/server_command.rb', line 84

def execute
  options[:gemdir] = Gem.path if options[:gemdir].empty?
  Gem::Server.run options
end