From 229eedfda87a7706dbb5e3e51af8707b3adae375 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Tue, 26 Aug 2008 12:14:21 -0500 Subject: Cache JavaScriptGenerator's helper module set on the template --- .../lib/action_view/helpers/prototype_helper.rb | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'actionpack/lib/action_view/helpers') diff --git a/actionpack/lib/action_view/helpers/prototype_helper.rb b/actionpack/lib/action_view/helpers/prototype_helper.rb index 09dbb67c0a..ff83494e94 100644 --- a/actionpack/lib/action_view/helpers/prototype_helper.rb +++ b/actionpack/lib/action_view/helpers/prototype_helper.rb @@ -588,8 +588,26 @@ module ActionView private def include_helpers_from_context - @context.send(:extended_by_without_helpers).each { |mod| extend mod } - extend GeneratorMethods + unless generator_methods_module = @context.instance_variable_get(:@__javascript_generator_methods__) + modules = @context.extended_by - ([ActionView::Helpers] + ActionView::Helpers.included_modules) + + generator_methods_module = Module.new do + modules.each do |mod| + begin + include mod + rescue Exception => e + # HACK: Probably not a good idea to suppress these warnings + # AFAIK exceptions are only raised in while testing with mocha + # because the module does not like to be included into other + # non TestUnit classes + end + end + include GeneratorMethods + end + @context.instance_variable_set(:@__javascript_generator_methods__, generator_methods_module) + end + + extend generator_methods_module end # JavaScriptGenerator generates blocks of JavaScript code that allow you -- cgit v1.2.3