Parent

Included Modules

Sinatra::Base

Base class for all Sinatra applications and middleware.

Constants

CALLERS_TO_IGNORE

Attributes

app[RW]
env[RW]
params[RW]
request[RW]
response[RW]
template_cache[R]

Public Class Methods

build(*args, &bk) click to toggle source

Creates a Rack::Builder instance with all the middleware set up and an instance of this class as end point.

# File lib/sinatra/base.rb, line 1259
def build(*args, &bk)
  builder = Rack::Builder.new
  builder.use Rack::MethodOverride if method_override?
  builder.use ShowExceptions       if show_exceptions?
  builder.use Rack::CommonLogger   if logging?
  builder.use Rack::Head
  setup_sessions builder
  middleware.each { |c,a,b| builder.use(c, *a, &b) }
  builder.run new!(*args, &bk)
  builder
end
call(env) click to toggle source
# File lib/sinatra/base.rb, line 1271
def call(env)
  synchronize { prototype.call(env) }
end
caller_files() click to toggle source

Like Kernel#caller but excluding certain magic entries and without line / method information; the resulting array contains filenames only.

# File lib/sinatra/base.rb, line 1328
def caller_files
  caller_locations.
    map { |file,line| file }
end
caller_locations() click to toggle source

Like caller_files, but containing Arrays rather than strings with the first element being the file, and the second being the line.

# File lib/sinatra/base.rb, line 1335
def caller_locations
  caller(1).
    map    { |line| line.split(/:(?=\d|in )/)[0,2] }.
    reject { |file,line| CALLERS_TO_IGNORE.any? { |pattern| file =~ pattern } }
end
configure(*envs, &block) click to toggle source

Set configuration options for Sinatra and/or the app. Allows scoping of settings for certain environments.

# File lib/sinatra/base.rb, line 1210
def configure(*envs, &block)
  yield self if envs.empty? || envs.include?(environment.to_sym)
end
delete(path, opts={}, &bk) click to toggle source
# File lib/sinatra/base.rb, line 1119
def delete(path, opts={}, &bk)  route 'DELETE',  path, opts, &bk end
development?() click to toggle source
# File lib/sinatra/base.rb, line 1204
def development?; environment == :development end
get(path, opts={}, &block) click to toggle source

Defining a `GET` handler also automatically defines a `HEAD` handler.

# File lib/sinatra/base.rb, line 1109
def get(path, opts={}, &block)
  conditions = @conditions.dup
  route('GET', path, opts, &block)

  @conditions = conditions
  route('HEAD', path, opts, &block)
end
head(path, opts={}, &bk) click to toggle source
# File lib/sinatra/base.rb, line 1120
def head(path, opts={}, &bk)    route 'HEAD',    path, opts, &bk end
helpers(*extensions, &block) click to toggle source

Makes the methods defined in the block and in the Modules given in `extensions` available to the handlers and templates

# File lib/sinatra/base.rb, line 1188
def helpers(*extensions, &block)
  class_eval(&block)  if block_given?
  include(*extensions) if extensions.any?
end
new(*args, &bk) click to toggle source

Create a new instance of the class fronted by its middleware pipeline. The object is guaranteed to respond to call but may not be an instance of the class new was called on.

# File lib/sinatra/base.rb, line 1253
def new(*args, &bk)
  build(*args, &bk).to_app
end
new(app=nil) click to toggle source
# File lib/sinatra/base.rb, line 621
def initialize(app=nil)
  @app = app
  @template_cache = Tilt::Cache.new
  yield self if block_given?
end
Also aliased as: new!
new!(app=nil) click to toggle source

Create a new instance without middleware in front of it.

Alias for: new
options() click to toggle source
Alias for: settings
post(path, opts={}, &bk) click to toggle source
# File lib/sinatra/base.rb, line 1118
def post(path, opts={}, &bk)    route 'POST',    path, opts, &bk end
production?() click to toggle source
# File lib/sinatra/base.rb, line 1205
def production?;  environment == :production  end
prototype() click to toggle source

The prototype instance used to process requests.

# File lib/sinatra/base.rb, line 1243
def prototype
  @prototype ||= new
end
put(path, opts={}, &bk) click to toggle source
# File lib/sinatra/base.rb, line 1117
def put(path, opts={}, &bk)     route 'PUT',     path, opts, &bk end
quit!(server, handler_name) click to toggle source
# File lib/sinatra/base.rb, line 1220
def quit!(server, handler_name)
  # Use Thin's hard #stop! if available, otherwise just #stop.
  server.respond_to?(:stop!) ? server.stop! : server.stop
  puts "\n== Sinatra has ended his set (crowd applauds)" unless handler_name =~/cgi/
end
register(*extensions, &block) click to toggle source

Register an extension. Alternatively take a block from which an extension will be created and registered on the fly.

# File lib/sinatra/base.rb, line 1195
def register(*extensions, &block)
  extensions << Module.new(&block) if block_given?
  @extensions += extensions
  extensions.each do |extension|
    extend extension
    extension.registered(self) if extension.respond_to?(:registered)
  end
end
run!(options={}) click to toggle source

Run the Sinatra app as a self-hosted server using Thin, Mongrel or WEBrick (in that order)

# File lib/sinatra/base.rb, line 1228
def run!(options={})
  set options
  handler      = detect_rack_handler
  handler_name = handler.name.gsub(/.*::/, '')
  puts "== Sinatra/#{Sinatra::VERSION} has taken the stage " +
    "on #{port} for #{environment} with backup from #{handler_name}" unless handler_name =~/cgi/
  handler.run self, :Host => bind, :Port => port do |server|
    [:INT, :TERM].each { |sig| trap(sig) { quit!(server, handler_name) } }
    set :running, true
  end
rescue Errno::EADDRINUSE => e
  puts "== Someone is already performing on port #{port}!"
end
settings() click to toggle source

Access settings defined with Base.set.

# File lib/sinatra/base.rb, line 658
def self.settings
  self
end
Also aliased as: options
test?() click to toggle source
# File lib/sinatra/base.rb, line 1206
def test?;        environment == :test        end
use(middleware, *args, &block) click to toggle source

Use the specified Rack middleware

# File lib/sinatra/base.rb, line 1215
def use(middleware, *args, &block)
  @prototype = nil
  @middleware << [middleware, args, block]
end

Public Instance Methods

call(env) click to toggle source

Rack call interface.

# File lib/sinatra/base.rb, line 628
def call(env)
  dup.call!(env)
end
forward() click to toggle source

Forward the request to the downstream app -- middleware only.

# File lib/sinatra/base.rb, line 687
def forward
  fail "downstream app not set" unless @app.respond_to? :call
  status, headers, body = @app.call env
  @response.status = status
  @response.body = body
  @response.headers.merge! headers
  nil
end
halt(*response) click to toggle source

Exit the current block, halts any further processing of the request, and returns the specified response.

# File lib/sinatra/base.rb, line 674
def halt(*response)
  response = response.first if response.length == 1
  throw :halt, response
end
options() click to toggle source
Alias for: settings
pass(&block) click to toggle source

Pass control to the next matching route. If there are no more matching routes, Sinatra will return a 404 response.

# File lib/sinatra/base.rb, line 682
def pass(&block)
  throw :pass, block
end
settings() click to toggle source

Access settings defined with Base.set.

# File lib/sinatra/base.rb, line 663
def settings
  self.class.settings
end
Also aliased as: options

[Validate]

Generated with the Darkfish Rdoc Generator 2.