class Pretzel::Core

Attributes

parameters[R]
request[R]
response[R]

Public Class Methods

builder() click to toggle source
# File lib/pretzel/core.rb, line 46
def builder
  @builder ||= Rack::Builder.new
end
filters() click to toggle source
# File lib/pretzel/core.rb, line 36
def filters
  @filters ||= Hash.new
end
new(*args, &block) click to toggle source
# File lib/pretzel/core.rb, line 41
def new(*args, &block)
  builder.run new!(*args, &block)
  builder
end
Also aliased as: new!
new() click to toggle source
# File lib/pretzel/core.rb, line 51
def initialize
  self.class.use Rack::Session::Cookie, secret: self.class.token
  self.class.use Rack::Static, :urls => ["/assets"]
end
new!(*args, &block)
Alias for: new
routes() click to toggle source
# File lib/pretzel/core.rb, line 32
def routes
  @routes ||= Hash.new { |hash, key| hash[key] = [] }
end
token() click to toggle source
# File lib/pretzel/core.rb, line 28
def token
  @token ||= SecureRandom.hex(32)
end

Public Instance Methods

call(env) click to toggle source
# File lib/pretzel/core.rb, line 56
def call(env)
  dup.call!(env)
end
call!(env) click to toggle source
# File lib/pretzel/core.rb, line 60
def call!(env)
  @request = Rack::Request.new(env)
  @response = Rack::Response.new
  @parameters = request.params

  @response["Server"] = "Ruby/#{RUBY_VERSION}"
  @response["X-Generated-By"] = "Pretzel/#{Pretzel::VERSION}"

  evaluate_route

  @response.finish
end
halt(*res) click to toggle source
# File lib/pretzel/core.rb, line 73
def halt(*res)
  response.status = res.detect{|x| x.is_a?(Fixnum) } || 200
  response.header.merge!(res.detect{|x| x.is_a?(Hash) } || {})

  if self.class.routes[response.status].empty?
    response.body = [res.detect{|x| x.is_a?(String) } || ""]
  else
    self.class.routes[response.status].each do |route, block|
      response.write instance_eval(&block)
    end
  end

  throw :halt, response
end