class Expressr::App

Constants

DEFAULTS

Attributes

router[R]
server[R]

Public Class Methods

new(server_options={}) click to toggle source
# File lib/expressr/app.rb, line 25
def initialize(server_options={})
  @router = Router.new
  @locals = {}
  set_default_root
  @server_options = { app: self }.merge(server_options)
  @server = Noder::HTTP::Server.new(@server_options)
  @router.server = @server
  request_stack = @server.event_stack('request')
  request_stack.replace(Noder::HTTP::Listeners::Request, callback: Expressr::Listeners::Request)
  request_stack.replace(Noder::HTTP::Listeners::Response, callback: Expressr::Listeners::Response)
end
settings() click to toggle source
# File lib/expressr/app.rb, line 20
def settings
  @settings ||= DEFAULTS
end

Public Instance Methods

all(path, &block) click to toggle source
# File lib/expressr/app.rb, line 73
def all(path, &block)
  @router.add_route(block, path: path)
end
close() click to toggle source
# File lib/expressr/app.rb, line 91
def close
  @server.close
end
disable(name) click to toggle source
# File lib/expressr/app.rb, line 53
def disable(name)
  settings[name] = false
end
disabled?(name) click to toggle source
# File lib/expressr/app.rb, line 61
def disabled?(name)
  settings[name] == false
end
enable(name) click to toggle source
# File lib/expressr/app.rb, line 49
def enable(name)
  settings[name] = true
end
enabled?(name) click to toggle source
# File lib/expressr/app.rb, line 57
def enabled?(name)
  settings[name] == true
end
engine(value) click to toggle source
# File lib/expressr/app.rb, line 65
def engine(value)
  set('view engine', value)
end
get(name_or_path, &block) click to toggle source
# File lib/expressr/app.rb, line 41
def get(name_or_path, &block)
  if block
    @router.get(name_or_path, &block)
  else
    settings[name_or_path]
  end
end
listen(port=nil, address=nil, &block) click to toggle source
# File lib/expressr/app.rb, line 85
def listen(port=nil, address=nil, &block)
  @server_options[:port] = port if port
  @server_options[:address] = address if address
  @server.listen(@server_options[:port], @server_options[:address], {}, &block)
end
locals() click to toggle source
# File lib/expressr/app.rb, line 77
def locals
  settings['locals']
end
param(name, &block) click to toggle source
# File lib/expressr/app.rb, line 69
def param(name, &block)
  @router.add_route(block, param: name)
end
render(view, options={}, &block) click to toggle source
# File lib/expressr/app.rb, line 81
def render(view, options={}, &block)
  raise NotImplementedError
end
set(name, value) click to toggle source
# File lib/expressr/app.rb, line 37
def set(name, value)
  settings[name] = value
end
settings() click to toggle source
# File lib/expressr/app.rb, line 95
def settings
  self.class.settings
end

Private Instance Methods

set_default_root() click to toggle source
# File lib/expressr/app.rb, line 101
def set_default_root
  return if get('root')
  caller_path = caller[1].split(':')[0]
  caller_directory = File.dirname(caller_path)
  set('root', Pathname.new(caller_directory))
end