From 801163e9f3d1e0452054dbccf9f876f62bf022a0 Mon Sep 17 00:00:00 2001 From: Blake Mizerany Date: Fri, 24 Apr 2009 17:10:46 -0700 Subject: [PATCH] closes #9779 Auto-require haml/erb/builder/sass this is causing thread-saftey issues. --- README.rdoc | 12 ++++++++++++ compat/helper.rb | 4 ++++ lib/sinatra/base.rb | 4 ---- test/haml_test.rb | 1 + test/helper.rb | 4 ++++ 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/README.rdoc b/README.rdoc index d8c6bbfa..ccb211a4 100644 --- a/README.rdoc +++ b/README.rdoc @@ -118,6 +118,9 @@ any strings passed to them directly. The haml gem/library is required to render HAML templates: + ## You'll need to require haml in your app + require 'haml' + get '/' do haml :index end @@ -138,6 +141,9 @@ and overridden on an individual basis. === Erb Templates + ## You'll need to require erb in your app + require 'erb' + get '/' do erb :index end @@ -148,6 +154,9 @@ Renders ./views/index.erb The builder gem/library is required to render builder templates: + ## You'll need to require builder in your app + require 'builder' + get '/' do content_type 'application/xml', :charset => 'utf-8' builder :index @@ -159,6 +168,9 @@ Renders ./views/index.builder. The sass gem/library is required to render Sass templates: + ## You'll need to require haml or sass in your app + require 'sass' + get '/stylesheet.css' do content_type 'text/css', :charset => 'utf-8' sass :stylesheet diff --git a/compat/helper.rb b/compat/helper.rb index 420c484c..562a75b9 100644 --- a/compat/helper.rb +++ b/compat/helper.rb @@ -1,6 +1,10 @@ require 'rubygems' require 'mocha' +require 'haml' +require 'sass' +require 'builder' + # disable warnings in compat specs. $VERBOSE = nil diff --git a/lib/sinatra/base.rb b/lib/sinatra/base.rb index c6327533..44e7c87b 100644 --- a/lib/sinatra/base.rb +++ b/lib/sinatra/base.rb @@ -223,23 +223,19 @@ module Sinatra # in the template module Templates def erb(template, options={}, locals={}) - require 'erb' unless defined? ::ERB render :erb, template, options, locals end def haml(template, options={}, locals={}) - require 'haml' unless defined? ::Haml::Engine render :haml, template, options, locals end def sass(template, options={}, locals={}) - require 'sass' unless defined? ::Sass::Engine options[:layout] = false render :sass, template, options, locals end def builder(template=nil, options={}, locals={}, &block) - require 'builder' unless defined? ::Builder options, template = template, nil if template.is_a?(Hash) template = lambda { block } if template.nil? render :builder, template, options, locals diff --git a/test/haml_test.rb b/test/haml_test.rb index d26af135..3d6ed69e 100644 --- a/test/haml_test.rb +++ b/test/haml_test.rb @@ -1,4 +1,5 @@ require File.dirname(__FILE__) + '/helper' +require 'haml' class HAMLTest < Test::Unit::TestCase def haml_app(&block) diff --git a/test/helper.rb b/test/helper.rb index 87d394b5..153b62de 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -14,6 +14,10 @@ $LOAD_PATH.unshift libdir unless $LOAD_PATH.include?(libdir) require 'contest' require 'sinatra/test' +require 'haml' +require 'sass' +require 'builder' + class Sinatra::Base # Allow assertions in request context include Test::Unit::Assertions