mirror of
https://github.com/sinatra/sinatra
synced 2023-03-27 23:18:01 -04:00
Add #helpers into Sinatra::Base [#134 state:resolved]
Signed-off-by: Ryan Tomayko <rtomayko@gmail.com>
This commit is contained in:
parent
25b045625c
commit
c094757b08
3 changed files with 48 additions and 8 deletions
|
@ -658,6 +658,11 @@ module Sinatra
|
|||
end
|
||||
|
||||
public
|
||||
def helpers(*modules, &block)
|
||||
include *modules unless modules.empty?
|
||||
class_eval(&block) if block
|
||||
end
|
||||
|
||||
def development? ; environment == :development ; end
|
||||
def test? ; environment == :test ; end
|
||||
def production? ; environment == :production ; end
|
||||
|
@ -900,7 +905,7 @@ module Sinatra
|
|||
delegate :get, :put, :post, :delete, :head, :template, :layout, :before,
|
||||
:error, :not_found, :configures, :configure, :set, :set_option,
|
||||
:set_options, :enable, :disable, :use, :development?, :test?,
|
||||
:production?, :use_in_file_templates!
|
||||
:production?, :use_in_file_templates!, :helpers
|
||||
end
|
||||
|
||||
def self.new(base=Base, options={}, &block)
|
||||
|
|
|
@ -32,13 +32,6 @@ end
|
|||
|
||||
include Sinatra::Delegator
|
||||
|
||||
def helpers(*modules, &block)
|
||||
Sinatra::Application.class_eval do
|
||||
modules.each {|m| include m }
|
||||
end
|
||||
Sinatra::Application.class_eval(&block)
|
||||
end
|
||||
|
||||
def mime(ext, type)
|
||||
ext = ".#{ext}" unless ext.to_s[0] == ?.
|
||||
Rack::Mime::MIME_TYPES[ext.to_s] = type
|
||||
|
|
|
@ -379,3 +379,45 @@ describe 'Helpers#etag' do
|
|||
assert_equal 'W/"FOO"', response['ETag']
|
||||
end
|
||||
end
|
||||
|
||||
describe 'Adding new helpers' do
|
||||
module HelperOne; def one; '1'; end; end
|
||||
module HelperTwo; def two; '2'; end; end
|
||||
|
||||
it 'should allow passing a list of modules' do
|
||||
mock_app {
|
||||
helpers HelperOne, HelperTwo
|
||||
|
||||
get '/one' do
|
||||
one
|
||||
end
|
||||
|
||||
get '/two' do
|
||||
two
|
||||
end
|
||||
}
|
||||
|
||||
get '/one'
|
||||
assert_equal '1', body
|
||||
|
||||
get '/two'
|
||||
assert_equal '2', body
|
||||
end
|
||||
|
||||
it 'should take a block and mix it into the app' do
|
||||
mock_app {
|
||||
helpers do
|
||||
def foo
|
||||
'foo'
|
||||
end
|
||||
end
|
||||
|
||||
get '/' do
|
||||
foo
|
||||
end
|
||||
}
|
||||
|
||||
get '/'
|
||||
assert_equal 'foo', body
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue