Skip to content

Commit c760d2d

Browse files
authored
Merge pull request #14 from aktsk/context-cached-renderer
Cache render context to avoid ruby cache invalidation
2 parents a45b699 + fb2b994 commit c760d2d

2 files changed

Lines changed: 10 additions & 4 deletions

File tree

lib/simple_json/simple_json_renderable.rb

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,7 @@ def rendered_format
5454
end
5555

5656
def simple_renderer
57-
@simple_renderer ||= SimpleJsonRenderer.new(self).tap do |r|
58-
r.extend(_helpers) if respond_to?(:_helpers)
59-
end
57+
@simple_renderer ||= self.class.simple_json_renderer_class.new(self)
6058
end
6159

6260
def render_json_template(template_name, **_options)
@@ -68,6 +66,14 @@ def render_json_template(template_name, **_options)
6866
if SimpleJson.template_cache_enabled? && !SimpleJsonRenderer.templates_loaded?
6967
SimpleJsonRenderer.load_all_templates!
7068
end
69+
70+
def self.simple_json_renderer_class
71+
@simple_json_renderer_class ||= begin
72+
klass = Class.new(SimpleJsonRenderer)
73+
klass.include(_helpers) if method_defined?(:_helpers)
74+
klass
75+
end
76+
end
7177
end
7278

7379
def template_path

lib/simple_json/simple_json_renderer.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def initialize(controller)
6060
end
6161

6262
def renderer(template_path)
63-
renderers[template_path] || self.class.load_template(template_path).tap do |renderer|
63+
renderers[template_path] || SimpleJson::SimpleJsonRenderer.load_template(template_path).tap do |renderer|
6464
renderers[template_path] = renderer
6565
end
6666
end

0 commit comments

Comments
 (0)