Add #helpers into Sinatra::Base [#134 state:resolved]

Signed-off-by: Ryan Tomayko <rtomayko@gmail.com>
This commit is contained in:
Nicolas Sanguinetti 2009-01-26 17:08:16 -02:00 committed by Ryan Tomayko
parent 25b045625c
commit c094757b08
3 changed files with 48 additions and 8 deletions

View File

@ -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)

View File

@ -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

View File

@ -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