Module: Sinatra::Extension
- Defined in:
- lib/sinatra/extension.rb
Overview
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
.
Defined Under Namespace
Classes: DontCall
Class Method Summary collapse
Instance Method Summary collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
Class Method Details
.new(&block) ⇒ Object
51 52 53 54 55 |
# File 'lib/sinatra/extension.rb', line 51 def self.new(&block) ext = Module.new.extend(self) ext.class_eval(&block) ext end |
Instance Method Details
#configure(*args, &block) ⇒ Object
61 62 63 |
# 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) ⇒ Object
65 66 67 |
# File 'lib/sinatra/extension.rb', line 65 def registered(base = nil, &block) base ? replay(base) : record(:class_eval, &block) end |
#settings ⇒ Object
57 58 59 |
# File 'lib/sinatra/extension.rb', line 57 def settings self end |