class DrunkMonkey::Base

Constants

DEFAULT_OPTIONS

Attributes

base[RW]

Public Class Methods

middleware() click to toggle source
# File lib/drunkmonkey.rb, line 65
def self.middleware
  Class.new do
    class << self
      attr_accessor :base
    end
    
    def initialize app = nil, options = {}, &block
      if self.class.base
        self.class.base.remap app
      else
        self.class.base = Base.new(app,options,&block)
      end
    end
  
    def call env
      self.class.base.call env
    end
  end
end
new(app = nil, options = {}) click to toggle source
# File lib/drunkmonkey.rb, line 40
def initialize app = nil, options = {}, &block
  options = DEFAULT_OPTIONS.merge(options)
  @controller = Celluloid::Actor[options[:controller_name]] ||
    Controller.new(options[:controller_name])
  
  instance_eval(&block) if block
  
  mapping = Hash.new
  mapping[options[:path]] = -> env do
    Transport.call env, options
  end
  
  @base_mapping = mapping.dup
  
  mapping["/"] = app if app
  
  @map = Rack::URLMap.new mapping
end

Public Instance Methods

call(env) click to toggle source
# File lib/drunkmonkey.rb, line 79
def call env
  self.class.base.call env
end
remap(app = nil) click to toggle source
# File lib/drunkmonkey.rb, line 59
def remap app = nil
  mapping = @base_mapping.dup
  mapping["/"] = app if app
  @map = Rack::URLMap.new mapping
end