Reset resource consumption before each render

This commit is contained in:
Justin Li
2014-12-09 17:23:07 -05:00
parent 9f7e601110
commit c2f71ee86b
3 changed files with 8 additions and 5 deletions

View File

@@ -69,7 +69,6 @@ module Liquid
def render(context)
output = []
context.resource_limits.render_length = 0
context.resource_limits.render_score += @nodelist.length
@nodelist.each do |token|

View File

@@ -7,10 +7,7 @@ module Liquid
@render_length_limit = limits[:render_length_limit]
@render_score_limit = limits[:render_score_limit]
@assign_score_limit = limits[:assign_score_limit]
# render_length is assigned by BlockBody
@render_score = 0
@assign_score = 0
reset
end
def reached?
@@ -18,5 +15,9 @@ module Liquid
(@render_score_limit && @render_score > @render_score_limit ) ||
(@assign_score_limit && @assign_score > @assign_score_limit )
end
def reset
@render_length = @render_score = @assign_score = 0
end
end
end

View File

@@ -205,6 +205,9 @@ module Liquid
context.add_filters(args.pop)
end
# Retrying a render resets resource usage
context.resource_limits.reset
begin
# render the nodelist.
# for performance reasons we get an array back here. join will make a string out of it.