mustache_render 0.0.10 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
@@ -23,17 +23,19 @@ MustacheRender.configure do |config|
23
23
  # 当文件模板不存在时候是否抛出异常
24
24
  config.raise_on_file_template_miss = true
25
25
 
26
+ config.logger = Rails.logger
27
+
26
28
  ### 模板的相关配置 ###########################
27
- # 数据库模板是否需要缓存
28
- config.db_template_cache = true
29
- # 文件模板是否需要缓存
30
- config.file_template_cache = false
31
- # 数据库模板缓存过期时间
32
- config.db_template_cache_expires_in = 1.hours
33
- # 文件模板缓存的过期时间, 注意文件系统没有自动清理缓存的机制,建议设置的短一些
34
- config.file_template_cache_expires_in = 1.minutes
35
- # 缓存的媒介
36
- config.cache_store = Rails.cache
29
+ # # 数据库模板是否需要缓存
30
+ # config.db_template_cache = true
31
+ # # 文件模板是否需要缓存
32
+ # config.file_template_cache = false
33
+ # # 数据库模板缓存过期时间
34
+ # config.db_template_cache_expires_in = 1.hours
35
+ # # 文件模板缓存的过期时间, 注意文件系统没有自动清理缓存的机制,建议设置的短一些
36
+ # config.file_template_cache_expires_in = 1.minutes
37
+ # # 缓存的媒介
38
+ # config.cache_store = Rails.cache
37
39
 
38
40
  # 版本适配器的配置
39
41
  config.adapter_configure do |adapter|
@@ -5,10 +5,22 @@ module MustacheRender
5
5
 
6
6
  def configure
7
7
  yield self.config ||= Config.new
8
+ self.config.apply!
8
9
  end
9
10
  end
10
11
 
11
12
  class Config
13
+ def apply!
14
+ # if self.action_view_handler?
15
+ # if defined?(::ActionView::Template)
16
+ # ::ActionView::Template.register_template_handler(
17
+ # self.action_view_handler_extension.to_sym,
18
+ # ::MustacheRender::CoreExt::ActionViewHandler
19
+ # )
20
+ # end
21
+ # end
22
+ end
23
+
12
24
  def initialize
13
25
  end
14
26
 
@@ -21,6 +33,18 @@ module MustacheRender
21
33
  end
22
34
  end
23
35
 
36
+ def action_view_handler?
37
+ if defined?(@_use_action_view_handler)
38
+ @_use_action_view_handler
39
+ else
40
+ true
41
+ end
42
+ end
43
+
44
+ def use_action_view_handler= _bool
45
+ @_use_action_view_handler = _bool unless defined?(@_use_action_view_handler)
46
+ end
47
+
24
48
  #
25
49
  # 默认的渲染媒介
26
50
  #
@@ -48,20 +72,22 @@ module MustacheRender
48
72
  @user_login_url ||= url
49
73
  end
50
74
 
51
- def cache
52
- return @_cache_store if defined?(@_cache_store)
75
+ # def cache
76
+ # return @_cache_store if defined?(@_cache_store)
53
77
 
54
- @_cache_store ||= Rails.cache
55
- # @_cache_store ||= MemCache.new('localhost:11211', :namespace => 'mustache_render#cache')
56
- end
78
+ # @_cache_store ||= Rails.cache
79
+ # # @_cache_store ||= MemCache.new('localhost:11211', :namespace => 'mustache_render#cache')
80
+ # end
57
81
 
58
- def cache_store= cache_store
59
- @_cache_store ||= cache_store
60
- end
82
+ # def cache_store= cache_store
83
+ # @_cache_store ||= cache_store
84
+ # end
61
85
 
62
86
  def logger
63
87
  return @_logger if defined?(@_logger)
64
88
 
89
+ require 'logger'
90
+
65
91
  @_logger ||= ::Logger.new(STDOUT)
66
92
  end
67
93
 
@@ -69,57 +95,57 @@ module MustacheRender
69
95
  @_logger ||= logger
70
96
  end
71
97
 
72
- #
73
- # 是否开启缓存
74
- #
75
- def db_template_cache?
76
- if defined?(@_db_template_cache)
77
- @_db_template_cache
78
- else
79
- true
80
- end
81
- end
82
-
83
- #
84
- # 是否开启缓存
85
- #
86
- def file_template_cache?
87
- if defined?(@_file_template_cache)
88
- @_file_template_cache
89
- else
90
- false
91
- end
92
- end
93
-
94
- #
95
- # 设置是否启用缓存
96
- #
97
- def db_template_cache= user_cache
98
- @_db_template_cache = user_cache unless defined?(@_db_template_cache)
99
- end
100
-
101
- #
102
- # 设置是否启用缓存
103
- #
104
- def file_template_cache= user_cache
105
- @_file_template_cache = user_cache unless defined?(@_file_template_cache)
106
- end
107
-
108
- def db_template_cache_expires_in
109
- @db_template_cache_expires_in ||= 1.hours
110
- end
111
-
112
- def file_template_cache_expires_in
113
- @file_template_cache_expires_in ||= 5.minutes
114
- end
115
-
116
- def db_template_cache_expires_in= expires_in
117
- @db_template_cache_expires_in ||= expires_in
118
- end
119
-
120
- def file_template_cache_expires_in= expires_in
121
- @file_template_cache_expires_in ||= expires_in
122
- end
98
+ # #
99
+ # # 是否开启缓存
100
+ # #
101
+ # def db_template_cache?
102
+ # if defined?(@_db_template_cache)
103
+ # @_db_template_cache
104
+ # else
105
+ # true
106
+ # end
107
+ # end
108
+
109
+ # #
110
+ # # 是否开启缓存
111
+ # #
112
+ # def file_template_cache?
113
+ # if defined?(@_file_template_cache)
114
+ # @_file_template_cache
115
+ # else
116
+ # false
117
+ # end
118
+ # end
119
+
120
+ # #
121
+ # # 设置是否启用缓存
122
+ # #
123
+ # def db_template_cache= user_cache
124
+ # @_db_template_cache = user_cache unless defined?(@_db_template_cache)
125
+ # end
126
+
127
+ # #
128
+ # # 设置是否启用缓存
129
+ # #
130
+ # def file_template_cache= user_cache
131
+ # @_file_template_cache = user_cache unless defined?(@_file_template_cache)
132
+ # end
133
+
134
+ # def db_template_cache_expires_in
135
+ # @db_template_cache_expires_in ||= 1.hours
136
+ # end
137
+
138
+ # def file_template_cache_expires_in
139
+ # @file_template_cache_expires_in ||= 5.minutes
140
+ # end
141
+
142
+ # def db_template_cache_expires_in= expires_in
143
+ # @db_template_cache_expires_in ||= expires_in
144
+ # end
145
+
146
+ # def file_template_cache_expires_in= expires_in
147
+ # @file_template_cache_expires_in ||= expires_in
148
+ # end
123
149
 
124
150
  def manage_center_need_login?
125
151
  if defined?(@manage_center_need_login)
@@ -149,6 +175,14 @@ module MustacheRender
149
175
  @file_template_root_path ||= path
150
176
  end
151
177
 
178
+ # def action_view_handler_extension
179
+ # @action_view_handler_extension ||= :mustache
180
+ # end
181
+
182
+ # def action_view_handler_extension= name
183
+ # @action_view_handler_extension ||= name
184
+ # end
185
+
152
186
  def db_template_extension
153
187
  @db_template_extension ||= '.mustache'
154
188
  end
@@ -203,3 +237,10 @@ module MustacheRender
203
237
 
204
238
  end
205
239
  end
240
+
241
+ # if ::MustacheRender.config.action_view_handler?
242
+ # ActionView::Template.register_template_handler(
243
+ # ::MustacheRender.config.db_template_extension.to_sym,
244
+ # ::MustacheRender::CoreExt::ActionViewHandler
245
+ # )
246
+ # end
@@ -0,0 +1,17 @@
1
+ # #
2
+ # # 注册action view handler
3
+ # #
4
+ # #
5
+ # module MustacheRender::CoreExt
6
+ # module ActionViewHandler
7
+ # def self.call template
8
+ # if template.locals.include? :mustache
9
+ # ::MustacheRender::Mustache.render(template.source.inspect, {}).html_safe
10
+ # else
11
+ # "#{template.source.inspect}".html_safe
12
+ # end
13
+ # end
14
+ #
15
+ # end
16
+ # end
17
+ #
@@ -19,21 +19,14 @@ module MustacheRender
19
19
  end
20
20
 
21
21
  def render(data = template, ctx = {})
22
- self.template = data
23
-
24
- return self.template.render(context) if ctx == {}
25
-
26
- begin
27
- context.push(ctx)
28
- self.template.render(context)
29
- ensure
30
- context.pop
22
+ impl_logger :level => :debug, :operation => 'MustacheRender::Mustache.render' do
23
+ impl_render data, ctx
31
24
  end
32
25
  end
33
26
 
34
27
  # 片段树
35
28
  def partials_tree
36
-
29
+
37
30
  end
38
31
 
39
32
  # Context accessors.
@@ -66,8 +59,10 @@ module MustacheRender
66
59
  # Given a file name and an optional context, attempts to load and
67
60
  # render the file as a template.
68
61
  def file_render(name, context = {})
69
- @media = :file
70
- render(partial(name), context)
62
+ impl_logger :level => :debug, :operation => "#{self.class}.file_render" do
63
+ @media = :file
64
+ render(partial(name), context)
65
+ end
71
66
  end
72
67
 
73
68
  def self.db_render(full_path, context={})
@@ -75,8 +70,10 @@ module MustacheRender
75
70
  end
76
71
 
77
72
  def db_render(full_path, context={})
78
- @media = :db
79
- render(partial(full_path), context)
73
+ impl_logger :level => :debug, :operation => "#{self.class}.db_render" do
74
+ @media = :db
75
+ render(partial(full_path), context)
76
+ end
80
77
  end
81
78
 
82
79
  def impl_read_db_template name
@@ -115,23 +112,30 @@ module MustacheRender
115
112
  end
116
113
 
117
114
  def read_template_from_media name, media
118
- ::MustacheRender.logger.debug "MustacheRender render -> read template from #{media}: #{name}"
119
- # puts "read_template_from_media: #{name} #{media}"
120
- case media
121
- when :db
122
- if ::MustacheRender.config.db_template_cache?
123
- self.class.fetch_partial_cache name, media, :expires_in => ::MustacheRender.config.db_template_cache_expires_in do
124
- impl_read_db_template name
125
- end
126
- else
127
- impl_read_db_template name
128
- end
129
- when :file
130
- if ::MustacheRender.config.file_template_cache?
131
- self.class.fetch_partial_cache name, media, :expires_in => ::MustacheRender.config.file_template_cache_expires_in do
132
- impl_read_file_template name
133
- end
134
- else
115
+ # ::MustacheRender.logger.debug "MustacheRender render -> read template from #{media}: #{name}"
116
+
117
+ impl_logger :level => :debug,
118
+ :operation => "MustacheRender render -> read template from #{media}: #{name}" do
119
+
120
+ case media
121
+ when :db
122
+ # if ::MustacheRender.config.db_template_cache?
123
+ # self.class.fetch_partial_cache name, media, :expires_in => ::MustacheRender.config.db_template_cache_expires_in do
124
+ # impl_read_db_template name
125
+ # end
126
+ # else
127
+ # impl_read_db_template name
128
+ # end
129
+ impl_read_file_template name
130
+ when :file
131
+ # if ::MustacheRender.config.file_template_cache?
132
+ # self.class.fetch_partial_cache name, media, :expires_in => ::MustacheRender.config.file_template_cache_expires_in do
133
+ # impl_read_file_template name
134
+ # end
135
+ # else
136
+ # impl_read_file_template name
137
+ # end
138
+
135
139
  impl_read_file_template name
136
140
  end
137
141
  end
@@ -148,34 +152,34 @@ module MustacheRender
148
152
  (@_cached_partials[media] ||= {})[name] ||= self.read_template_from_media name, media
149
153
  end
150
154
 
151
- def self.partial_cache_key(name, media)
152
- raise 'options key: :media must in(:file, :db)' unless [:file, :db].include?(media)
153
- "MustacheRender::Mustache#Template.cache##{media}##{name}"
154
- end
155
-
156
- def self.exist_partial_cache?(name, media)
157
- ::MustacheRender.config.cache.exist?(self.partial_cache_key(name, media))
158
- end
159
-
160
- def self.delete_partial_cache(name, media)
161
- ::MustacheRender.config.cache.delete(self.partial_cache_key(name, media))
162
- end
163
-
164
- def self.fetch_partial_cache(name, media, options={}, &block)
165
- ::MustacheRender.config.cache.fetch(self.partial_cache_key(name, media), options) do
166
- if block_given?
167
- block.call
168
- end
169
- end
170
- end
171
-
172
- def self.read_partial_cache(name, media)
173
- ::MustacheRender.config.cache.read(self.partial_cache_key(name, media))
174
- end
175
-
176
- def self.write_partial_cache(name, media, value, options={})
177
- ::MustacheRender.config.cache.write(self.partial_cache_key(name, media), value, options)
178
- end
155
+ ## def self.partial_cache_key(name, media)
156
+ ## raise 'options key: :media must in(:file, :db)' unless [:file, :db].include?(media)
157
+ ## "MustacheRender::Mustache#Template.cache##{media}##{name}"
158
+ ## end
159
+ ##
160
+ ## def self.exist_partial_cache?(name, media)
161
+ ## ::MustacheRender.config.cache.exist?(self.partial_cache_key(name, media))
162
+ ## end
163
+ ##
164
+ ## def self.delete_partial_cache(name, media)
165
+ ## ::MustacheRender.config.cache.delete(self.partial_cache_key(name, media))
166
+ ## end
167
+ ##
168
+ ## def self.fetch_partial_cache(name, media, options={}, &block)
169
+ ## ::MustacheRender.config.cache.fetch(self.partial_cache_key(name, media), options) do
170
+ ## if block_given?
171
+ ## block.call
172
+ ## end
173
+ ## end
174
+ ## end
175
+ ##
176
+ ## def self.read_partial_cache(name, media)
177
+ ## ::MustacheRender.config.cache.read(self.partial_cache_key(name, media))
178
+ ## end
179
+ ##
180
+ ## def self.write_partial_cache(name, media, value, options={})
181
+ ## ::MustacheRender.config.cache.write(self.partial_cache_key(name, media), value, options)
182
+ ## end
179
183
 
180
184
  # Override this to provide custom escaping.
181
185
  #
@@ -310,5 +314,42 @@ module MustacheRender
310
314
  def self.inheritable_config_for(attr_name, default)
311
315
  superclass.respond_to?(attr_name) ? superclass.send(attr_name) : default
312
316
  end
317
+
318
+ private
319
+
320
+ def impl_logger options={}
321
+ level = options[:level] || :debug
322
+
323
+ result = nil
324
+
325
+ if block_given?
326
+ start_at = Time.now
327
+ result = yield
328
+ ms = ((Time.now - start_at) * 1000).to_i
329
+ MustacheRender.logger.send level, impl_format_log_entry(
330
+ "#{options[:operation]} (#{ms}ms)", options[:message]
331
+ )
332
+ end
333
+
334
+ result
335
+ end
336
+
337
+ def impl_format_log_entry(operation, message = nil)
338
+ " \033[4;34;1m#{operation}\033[0m \033[0;1m#{message}\033[0m"
339
+ end
340
+
341
+ def impl_render(data=template, ctx={})
342
+ self.template = data
343
+
344
+ return self.template.render(context) if ctx == {}
345
+
346
+ begin
347
+ context.push(ctx)
348
+ self.template.render(context)
349
+ ensure
350
+ context.pop
351
+ end
352
+ end
353
+
313
354
  end
314
355
  end
@@ -3,7 +3,7 @@ module MustacheRender
3
3
  VERSION_NUMBERS = [
4
4
  VERSION_MAJOR = 0,
5
5
  VERSION_MINOR = 0,
6
- VERSION_BUILD = 10,
6
+ VERSION_BUILD = 12,
7
7
  ]
8
8
 
9
9
  VERSION = VERSION_NUMBERS.join(".")
@@ -2,6 +2,7 @@
2
2
  require 'mustache_render/adapter'
3
3
  require 'mustache_render/config'
4
4
  require 'mustache_render/mustache'
5
+ # require 'benchmark'
5
6
 
6
7
  module MustacheRender
7
8
  def self.logger
@@ -21,6 +22,7 @@ module MustacheRender
21
22
 
22
23
  module CoreExt
23
24
  autoload :BaseControllerExt, 'mustache_render/core_ext/base_controller_ext'
25
+ # autoload :ActionViewHandler, 'mustache_render/core_ext/action_view_handler'
24
26
  end
25
27
 
26
28
  module Controllers
@@ -2,9 +2,6 @@ require 'spec_helper'
2
2
 
3
3
  describe 'MustacheRender::Mustache.db_render' do
4
4
  before :each do
5
- MustacheRender.configure do |config|
6
- config.file_template_root_path = ROOT_PATH + '/resources/templates'
7
- end
8
5
  end
9
6
 
10
7
  it 'template scan_tags test' do
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,51 @@
1
1
  require 'mustache_render'
2
2
 
3
+
3
4
  ROOT_PATH = File.dirname(__FILE__) + '/lib'
5
+
6
+ # -*- encoding : utf-8 -*-
7
+ MustacheRender.configure do |config|
8
+ # 默认的模板渲染媒介
9
+ # :db => 数据库渲染
10
+ # :file => 文件系统渲染
11
+ config.default_render_media = :db
12
+
13
+ # 默认的文件模板的根目录
14
+ config.file_template_root_path = ROOT_PATH + '/resources/templates'
15
+
16
+ # 默认的文件模板的扩展名称
17
+ config.file_template_extension = '.mustache'
18
+
19
+ # 默认的数据模板的扩展名称
20
+ config.db_template_extension = '.mustache'
21
+
22
+ # 当字段缺少的时候是否抛出异常
23
+ config.raise_on_context_miss = false
24
+
25
+ # 当数据库模板不存在时候是否抛出异常
26
+ config.raise_on_db_template_miss = true
27
+
28
+ # 当文件模板不存在时候是否抛出异常
29
+ config.raise_on_file_template_miss = true
30
+
31
+ # config.logger = Rails.logger
32
+
33
+ config.logger.level = Logger::INFO
34
+
35
+ ### 模板的相关配置 ###########################
36
+ # 缓存的媒介
37
+ # config.cache_store = Rails.cache
38
+
39
+ # 版本适配器的配置
40
+ config.adapter_configure do |adapter|
41
+
42
+ end
43
+
44
+ # config.manage_center_need_login = true
45
+ config.manage_center_need_login = false
46
+ config.user_login_url = '/login'
47
+ config.manager_authenticate_fail_url = '/auth_fail'
48
+ end
49
+
50
+
51
+
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mustache_render
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 7
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 10
10
- version: 0.0.10
9
+ - 12
10
+ version: 0.0.12
11
11
  platform: ruby
12
12
  authors:
13
13
  - happy
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2013-01-21 00:00:00 +08:00
18
+ date: 2013-01-24 00:00:00 +08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -77,6 +77,7 @@ files:
77
77
  - lib/mustache_render/resources/jquery.js
78
78
  - lib/mustache_render/resources/jquery_ujs.js
79
79
  - lib/mustache_render/config.rb
80
+ - lib/mustache_render/core_ext/action_view_handler.rb
80
81
  - lib/mustache_render/core_ext/base_controller_ext.rb
81
82
  - lib/mustache_render/helpers/mustache_render/manage/base_helper.rb
82
83
  - lib/mustache_render/version.rb