diff --git a/lib/simple_json/simple_json_renderable.rb b/lib/simple_json/simple_json_renderable.rb index c583e63..91469b6 100644 --- a/lib/simple_json/simple_json_renderable.rb +++ b/lib/simple_json/simple_json_renderable.rb @@ -54,9 +54,7 @@ def rendered_format end def simple_renderer - @simple_renderer ||= SimpleJsonRenderer.new(self).tap do |r| - r.extend(_helpers) if respond_to?(:_helpers) - end + @simple_renderer ||= self.class.simple_json_renderer_class.new(self) end def render_json_template(template_name, **_options) @@ -68,6 +66,14 @@ def render_json_template(template_name, **_options) if SimpleJson.template_cache_enabled? && !SimpleJsonRenderer.templates_loaded? SimpleJsonRenderer.load_all_templates! end + + def self.simple_json_renderer_class + @simple_json_renderer_class ||= begin + klass = Class.new(SimpleJsonRenderer) + klass.include(_helpers) if method_defined?(:_helpers) + klass + end + end end def template_path diff --git a/lib/simple_json/simple_json_renderer.rb b/lib/simple_json/simple_json_renderer.rb index ba4e1a3..0cff63f 100644 --- a/lib/simple_json/simple_json_renderer.rb +++ b/lib/simple_json/simple_json_renderer.rb @@ -60,7 +60,7 @@ def initialize(controller) end def renderer(template_path) - renderers[template_path] || self.class.load_template(template_path).tap do |renderer| + renderers[template_path] || SimpleJson::SimpleJsonRenderer.load_template(template_path).tap do |renderer| renderers[template_path] = renderer end end