Class: PuppetForgeServer::Server

Inherits:
Object
  • Object
show all
Includes:
Utils::Http, Utils::OptionParser
Defined in:
lib/puppet_forge_server/server.rb

Instance Method Summary collapse

Methods included from Utils::Http

#get_api_version

Methods included from Utils::OptionParser

#parse_options

Methods included from Utils::Url

#normalize_url

Instance Method Details

#announce(options, backends) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/puppet_forge_server/server.rb', line 56

def announce(options, backends)
  options = options.clone
  options.default = 'default'
  @log.info " +- Daemonizing: #{options[:daemonize]}"
  @log.info " |- Port: #{options[:port]}"
  @log.info " |- Host: #{options[:hostname]}"
  @log.info " |- Pidfile: #{options[:pidfile]}" if options[:pidfile]
  @log.info " |- Server: #{options[:server]}"
  @log.info ' `- Backends:'
  backends.each do |backend|
    @log.info "    - #{backend.inspect}"
  end
end

#build(backends) ⇒ Object



49
50
51
52
53
54
# File 'lib/puppet_forge_server/server.rb', line 49

def build(backends)
  Rack::Mount::RouteSet.new do |set|
    set.add_route PuppetForgeServer::App::Version1.new(backends)
    set.add_route PuppetForgeServer::App::Version3.new(backends)
  end
end

#go(args) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/puppet_forge_server/server.rb', line 24

def go(args)
  begin
    options = parse_options(args)
    @log = logging(options)
    backends = backends(options)
    server = build(backends)
    announce(options, backends)
    start(server, options)
  rescue PuppetForgeServer::Errors::Expected
    @log.error error
  end
end

#logging(options) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
# File 'lib/puppet_forge_server/server.rb', line 37

def logging(options)
  if options[:log_dir]
    FileUtils.mkdir_p options[:log_dir]
    server_loggers = [File.join(options[:log_dir], 'server.log')]
    server_loggers << STDERR if options[:debug]
    access_loggers = [File.join(options[:log_dir], 'access.log')]
    access_loggers << STDERR if options[:debug]
    PuppetForgeServer::Logger.set({:server => server_loggers, :access => access_loggers})
  end
  PuppetForgeServer::Logger.get
end

#start(server, options) ⇒ Object



70
71
72
73
74
75
76
77
78
79
80
# File 'lib/puppet_forge_server/server.rb', line 70

def start(server, options)
  FileUtils.mkdir_p File.dirname(options[:pidfile]) if options[:pidfile]
  Rack::Server.start(
      :app => server,
      :Host => options[:hostname],
      :Port => options[:port],
      :server => options[:server],
      :daemonize => options[:daemonize],
      :pid => options[:pidfile]
  )
end