# class Gem::Commands::ServerCommand

### Public Class Methods

new() click to toggle source
Calls superclass method `Gem::Command::new`

    # File lib/rubygems/commands/server_command.rb, line 7
    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

### Public Instance Methods

execute() click to toggle source

    # File lib/rubygems/commands/server_command.rb, line 81
    def execute
      options[:gemdir] = Gem.path if options[:gemdir].empty?
      Gem::Server.run options
    end