Sha256: 2c836ac4646de8fa94bd675cfbcb04878e28a560614cf7b6b300a753c35ad92c

Contents?: true

Size: 1.01 KB

Versions: 1

Compression:

Stored size: 1.01 KB

Contents

module BeanstalkdView

  class Server < Sinatra::Base
    
    def beanstalk
      @@beanstalk ||= Beanstalk::Pool.new(beanstalk_addresses)
    end

    def beanstalk_url
      return @@url if defined?(@@url) and @@url
      ENV['BEANSTALK_URL'] || 'beanstalk://localhost/'
    end

    class BadURL < RuntimeError; end

    def beanstalk_addresses
      uris = beanstalk_url.split(/[\s,]+/)
      uris.map {|uri| beanstalk_host_and_port(uri)}
    end

    def beanstalk_host_and_port(uri_string)
      uri = URI.parse(uri_string)
      raise(BadURL, uri_string) if uri.scheme != 'beanstalk'
      "#{uri.host}:#{uri.port || 11300}"
    end
      
    get "/" do
      @tubes = beanstalk.list_tubes
      @stats = beanstalk.stats
      erb :index
    end
    
    get "/tube/:tube" do
      @stats = beanstalk.stats_tube(params[:tube])
      erb :tube_stats
    end

    
    get "/resources/*" do |path|
      file = File.expand_path(File.join('resources', path), File.dirname(__FILE__))
      send_file file
    end
    
  end
    
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
beanstalkd_view-0.1.0 lib/beanstalkd_view/server.rb