Sha256: 805210e00eef9ecfa6bab07dfc8f83352121b51d3cff1aee29784defcf361fc0

Contents?: true

Size: 1.04 KB

Versions: 5

Compression:

Stored size: 1.04 KB

Contents

class FnordMetric::Web

  def initialize(opts)
    @opts = opts

    @opts[:server] ||= "thin"
    @opts[:host]   ||= "0.0.0.0"
    @opts[:port]   ||= "4242"

    FnordMetric.register(self)
  end

  def initialized
    server = @opts[:server].downcase

    middleware_stack = @opts[:use] || []

    websocket = FnordMetric::WebSocket.new
    webapp    = FnordMetric::App.new(@opts)

    dispatch  = Rack::Builder.app do
      use Rack::CommonLogger
      use Rack::ShowExceptions

      map "/stream" do
        run websocket
      end

      map "/" do
        middleware_stack.each do |middleware| 
          use(*middleware[0..1], &middleware[2])
        end

        run webapp
      end
    end

    unless ["thin", "hatetepe"].include? server
      raise "Need an EventMachine webserver, but #{server} isn't"
    end

    host = @opts[:host] 
    port = @opts[:port]

    Rack::Server.start(
      :app => dispatch,
      :server => server,
      :Host => host, 
      :Port => port
    ) && FnordMetric.log("listening on http://#{host}:#{port}")
  end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
fnordmetric-1.2.1 lib/fnordmetric/web/web.rb
fnordmetric-1.2.0 lib/fnordmetric/web/web.rb
fnordmetric-1.0.1 lib/fnordmetric/web/web.rb
fnordmetric-1.0.0 lib/fnordmetric/web/web.rb
fnordmetric-0.9.7 lib/fnordmetric/web/web.rb