Sha256: ea3090015ea165e6d1fade9891316029c1e87ed9936ea34b42ae6192e63f9ee7

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

require 'thor'
require 'thin'

module Firehose
  class CLI < Thor
    desc "server", "starts the firehose server"
    method_option :port, :type => :numeric, :default => Firehose::Default::URI.port, :required => true, :aliases => '-p'
    method_option :host, :type => :string, :default => '0.0.0.0', :required => true, :aliases => '-h'

    def server
      broker = Firehose::Broker.new

      server = Thin::Server.new(options[:host], options[:port]) do
        # TODO move this into a socket... this is really janky, but I need to to troubleshoot
        # connection reference issues. I'd like to have this ancillary stuff accessiable via
        # a different port or even a socket.
        map '/_firehose/stats' do
          run Proc.new {
            [200, {'Content-Type' => 'text/plain'}, [broker.stats.inspect]]
          }
        end

        map '/' do
          run Firehose::Rack::App.new(broker)
        end
      end

      begin
        server.start!
      rescue AMQP::TCPConnectionFailed => e
        Firehose.logger.error "Unable to connect to AMQP, are you sure it's running?"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
firehose-0.0.16 lib/firehose/cli.rb