Class: Tenjin::FileBaseTemplateCache
- Inherits:
-
TemplateCache
- Object
- TemplateCache
- Tenjin::FileBaseTemplateCache
- Defined in:
- lib/tenjin.rb
Overview
file base template cache which saves template script into file
Instance Method Summary collapse
Instance Method Details
#load(cachepath, timestamp = nil) ⇒ Object
1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 |
# File 'lib/tenjin.rb', line 1036 def load(cachepath, =nil) # 'timestamp' argument has mtime of template file #: load template data from cache file. begin #: if template timestamp is specified and different from that of cache file, return nil mtime = File.mtime(cachepath) if && mtime != #File.unlink(cachepath) Tenjin.logger.debug("[tenjin.rb:#{__LINE__}] cache expired (cachefile=#{cachepath.inspect}).") if Tenjin.logger return nil end script = File.open(cachepath, 'rb') {|f| f.read } rescue Errno::ENOENT => ex #: if cache file is not found, return nil. Tenjin.logger.debug("[tenjin.rb:#{__LINE__}] cache not found (cachefile=#{cachepath.inspect}).") if Tenjin.logger return nil end #: get template args data from cached data. args = script.sub!(/\A\#@ARGS (.*)\r?\n/, '') ? $1.split(/,/) : [] #: return script, template args, and mtime of cache file. Tenjin.logger.debug("[tenjin.rb:#{__LINE__}] cache found (cachefile=#{cachepath.inspect}).") if Tenjin.logger return [script, args, mtime] end |
#save(cachepath, template) ⇒ Object
1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 |
# File 'lib/tenjin.rb', line 1024 def save(cachepath, template) #: save template script and args into cache file. t = template tmppath = "#{cachepath}#{rand().to_s[1,8]}" s = t.args ? "\#@ARGS #{t.args.join(',')}\n" : '' File.open(tmppath, 'wb') {|f| f.write(s); f.write(t.script) } #: set cache file's mtime to template timestamp. File.utime(t., t., tmppath) if t. File.rename(tmppath, cachepath) Tenjin.logger.debug("[tenjin.rb:#{__LINE__}] cache saved (cachefile=#{cachepath.inspect}).") if Tenjin.logger end |