Sha256: a0aaa68e7ef58a85c9f99f75776931428c58735a60a7b3e300c00b5a64b9d5c2

Contents?: true

Size: 1.24 KB

Versions: 2

Compression:

Stored size: 1.24 KB

Contents

require "goliath/server"
require "log4r"

module Slideoff
  class Server
    DEFAULT_PORT = Goliath::Server::DEFAULT_PORT
    DEFAULT_ADDRESS = Goliath::Server::DEFAULT_ADDRESS

    attr_reader :dir, :options, :remote_key, :host, :port

    def initialize(options)
      @dir = Dir.pwd
      @options = options
      @remote_key = @options.delete(:remote_key) || rand(1_000_000).to_s(16)
      @host = @options.delete(:host) || DEFAULT_ADDRESS
      @port = @options.delete(:port) || DEFAULT_PORT
    end

    def start
      server = Goliath::Server.new(host, port)
      server.options = options
      server.app = Slideoff::Routes.run(presentation, :remote_key => remote_key)
      server.logger = logger

      server.start
    end

    private

    def presentation
      Slideoff::Presentation.new(dir)
    end

    def logger
      logger = Log4r::Logger.new(self.class.name)
      logger.add(stdout_outputter)
      logger.level = Log4r::DEBUG
      logger.info("Starting server on http://#{host}:#{port}. Rock your presentation!")
      logger
    end

    def stdout_outputter
      Log4r::StdoutOutputter.new('console', :formatter => log_formatter)
    end

    def log_formatter
      Log4r::PatternFormatter.new(:pattern => "[%p:%l] %d %m")
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
slideoff-0.2 lib/slideoff/server.rb
slideoff-0.1 lib/slideoff/server.rb