aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib
diff options
context:
space:
mode:
authorJoshua Peek <josh@joshpeek.com>2008-08-25 21:44:21 -0500
committerJoshua Peek <josh@joshpeek.com>2008-08-25 21:50:26 -0500
commitf2d8d13c6495f2a9b3bbf3b50d869c0e5b25c207 (patch)
tree03154d7843617fe745a9316c6a010dc7944c5f0f /actionpack/lib
parentba0d621695c372464383b56d2f33a7b892ed6aa5 (diff)
downloadrails-f2d8d13c6495f2a9b3bbf3b50d869c0e5b25c207.tar.gz
rails-f2d8d13c6495f2a9b3bbf3b50d869c0e5b25c207.tar.bz2
rails-f2d8d13c6495f2a9b3bbf3b50d869c0e5b25c207.zip
Performance: Cache modules that extend the view context for JavaScriptGenerator
Diffstat (limited to 'actionpack/lib')
-rw-r--r--actionpack/lib/action_view/base.rb8
-rw-r--r--actionpack/lib/action_view/helpers/prototype_helper.rb4
2 files changed, 7 insertions, 5 deletions
diff --git a/actionpack/lib/action_view/base.rb b/actionpack/lib/action_view/base.rb
index cc89c66a39..e1f35b8105 100644
--- a/actionpack/lib/action_view/base.rb
+++ b/actionpack/lib/action_view/base.rb
@@ -158,6 +158,7 @@ module ActionView #:nodoc:
# See the ActionView::Helpers::PrototypeHelper::GeneratorMethods documentation for more details.
class Base
include ERB::Util
+ extend ActiveSupport::Memoizable
attr_accessor :base_path, :assigns, :template_extension
attr_accessor :controller
@@ -324,11 +325,14 @@ module ActionView #:nodoc:
template
end
end
-
- extend ActiveSupport::Memoizable
memoize :pick_template
private
+ def extended_by_without_helpers #:nodoc:
+ extended_by.reject { |mod| mod.name =~ /^ActionView::Helpers/ }
+ end
+ memoize :extended_by_without_helpers
+
# Evaluate the local assigns and pushes them to the view.
def evaluate_assigns
unless @assigns_added
diff --git a/actionpack/lib/action_view/helpers/prototype_helper.rb b/actionpack/lib/action_view/helpers/prototype_helper.rb
index 4c3a8311a5..09dbb67c0a 100644
--- a/actionpack/lib/action_view/helpers/prototype_helper.rb
+++ b/actionpack/lib/action_view/helpers/prototype_helper.rb
@@ -588,9 +588,7 @@ module ActionView
private
def include_helpers_from_context
- @context.extended_by.each do |mod|
- extend mod unless mod.name =~ /^ActionView::Helpers/
- end
+ @context.send(:extended_by_without_helpers).each { |mod| extend mod }
extend GeneratorMethods
end