Sinatra::Extension

Sinatra::Extension

Sinatra::Extension is a mixin that provides some syntactic sugar for your extensions. It allows you to call almost any Sinatra::Base method directly inside your extension module. This means you can use get to define a route, before to define a before filter, set to define a setting and so on.

Is important to be aware that this mixin remembers the method calls you make, and then, when your extension is registered, replays them on the Sinatra application that has been extended. In order to do that, it defines a registered method, so, if your extension defines one too, remember to call super.

Usage

Just require the mixin and extend your extension with it:

require 'sinatra/extension'

module MyExtension
  extend Sinatra::Extension

  # set some settings for development
  configure :development do
    set :reload_stuff, true
  end

  # define a route
  get '/' do
    'Hello World'
  end

  # The rest of your extension code goes here...
end

You can also create an extension with the new method:

MyExtension = Sinatra::Extension.new do
  # Your extension code goes here...
end

This is useful when you just want to pass a block to Sinatra::Base.register.

Public Class Methods

new(&block) click to toggle source
# File lib/sinatra/extension.rb, line 51
def self.new(&block)
  ext = Module.new.extend(self)
  ext.class_eval(&block)
  ext
end

Public Instance Methods

configure(*args, &block) click to toggle source
# File lib/sinatra/extension.rb, line 61
def configure(*args, &block)
  record(:configure, *args) { |c| c.instance_exec(c, &block) }
end
registered(base = nil, &block) click to toggle source
# File lib/sinatra/extension.rb, line 65
def registered(base = nil, &block)
  base ? replay(base) : record(:class_eval, &block)
end
settings() click to toggle source
# File lib/sinatra/extension.rb, line 57
def settings
  self
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.