diff options
author | Jérémy Zurcher <jeremy@asynk.ch> | 2012-01-05 10:19:49 +0100 |
---|---|---|
committer | Jérémy Zurcher <jeremy@asynk.ch> | 2012-01-05 10:19:49 +0100 |
commit | 145714edebd9af891836d10ea17cab5007833e87 (patch) | |
tree | 0c38d7344e9e7febbea0ebcc8064eb5676d2d029 | |
parent | 5d14ef1baf615197e6ad5fc9aee5e72ba8b9fbd4 (diff) | |
download | zorglub-145714edebd9af891836d10ea17cab5007833e87.zip zorglub-145714edebd9af891836d10ea17cab5007833e87.tar.gz |
implement engine cache
-rw-r--r-- | TODO | 5 | ||||
-rw-r--r-- | lib/zorglub/app.rb | 2 | ||||
-rw-r--r-- | lib/zorglub/config.rb | 1 | ||||
-rw-r--r-- | lib/zorglub/engines/haml.rb | 7 | ||||
-rw-r--r-- | lib/zorglub/node.rb | 6 |
5 files changed, 18 insertions, 3 deletions
@@ -1,5 +1,8 @@ -- compiled templates cache +TODO - static pages - development and production modes - minimized html/js/css - encoding mime-type + +MAYBE +- app.config instead of Zorglub::Config diff --git a/lib/zorglub/app.rb b/lib/zorglub/app.rb index 635f511..fa4ff6b 100644 --- a/lib/zorglub/app.rb +++ b/lib/zorglub/app.rb @@ -11,7 +11,9 @@ module Zorglub @map = map instance_eval &block if block_given? remap @map + @engines_cache = { } end + attr_reader :engines_cache # def map location, object return unless location and object diff --git a/lib/zorglub/config.rb b/lib/zorglub/config.rb index d648958..26fd449 100644 --- a/lib/zorglub/config.rb +++ b/lib/zorglub/config.rb @@ -13,6 +13,7 @@ module Zorglub :session_key => 'zorglub.sid', :session_secret => 'session-secret-secret', :session_sid_len => 64, + :engines_cache_enabled => true, :haml_options => { :format => :html5, :ugly => false, diff --git a/lib/zorglub/engines/haml.rb b/lib/zorglub/engines/haml.rb index 8c7bce0..8cfb847 100644 --- a/lib/zorglub/engines/haml.rb +++ b/lib/zorglub/engines/haml.rb @@ -7,7 +7,12 @@ module Zorglub module Engines module Haml def self.proc path,obj - haml = ::Haml::Engine.new( File.open(path,'r').read, Zorglub::Config.haml_options ) + if Zorglub::Config.engines_cache_enabled + key = path.sub Zorglub::Config.root,'' + haml = obj.app.engines_cache[key] ||= ::Haml::Engine.new( File.open(path,'r').read, Zorglub::Config.haml_options ) + else + haml = ::Haml::Engine.new( File.open(path,'r').read, Zorglub::Config.haml_options ) + end html = haml.render(obj) return html, 'text/html' end diff --git a/lib/zorglub/node.rb b/lib/zorglub/node.rb index 2e46bdf..68e535b 100644 --- a/lib/zorglub/node.rb +++ b/lib/zorglub/node.rb @@ -41,7 +41,7 @@ module Zorglub var end # - attr_writer :app + attr_accessor :app def map app, location @app = app @app.map location, self @@ -176,6 +176,10 @@ module Zorglub d end # + def app + self.class.app + end + # def args @options[:args] end |