aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_view/test_case.rb
diff options
context:
space:
mode:
authorYehuda Katz <wycats@gmail.com>2009-08-10 02:54:17 -0400
committerYehuda Katz <wycats@gmail.com>2009-08-11 15:03:53 -0700
commit4945d8223964d4ccb3c0a0f4107f15ae1c6c4a09 (patch)
treee283f8192ea7d4563926b91e5a430e3462999090 /actionpack/lib/action_view/test_case.rb
parentbef7576c09bbd51aeeb8e83b4cf24a994a0256b0 (diff)
downloadrails-4945d8223964d4ccb3c0a0f4107f15ae1c6c4a09.tar.gz
rails-4945d8223964d4ccb3c0a0f4107f15ae1c6c4a09.tar.bz2
rails-4945d8223964d4ccb3c0a0f4107f15ae1c6c4a09.zip
Further experimentation. Was able to cut the cost of rendering 100 partials in a collection in half.
To discuss: What are the desired semantics (if any) for layouts in a collection. There are no tests for it at present, and I'm not sure if it's needed at all. Deprecated on this branch: `object` pointing at the current object in partials. You can still use the partial name, or use :as to achieve the same thing. This is obviously up for discussion.
Diffstat (limited to 'actionpack/lib/action_view/test_case.rb')
-rw-r--r--actionpack/lib/action_view/test_case.rb20
1 files changed, 11 insertions, 9 deletions
diff --git a/actionpack/lib/action_view/test_case.rb b/actionpack/lib/action_view/test_case.rb
index e51744d095..b317b6dc1a 100644
--- a/actionpack/lib/action_view/test_case.rb
+++ b/actionpack/lib/action_view/test_case.rb
@@ -9,14 +9,16 @@ module ActionView
end
attr_internal :rendered
- alias_method :_render_template_without_template_tracking, :_render_single_template
- def _render_single_template(template, local_assigns, &block)
- if template.respond_to?(:identifier) && template.present?
- @_rendered[:partials][template] += 1 if template.partial?
- @_rendered[:template] ||= []
- @_rendered[:template] << template
- end
- _render_template_without_template_tracking(template, local_assigns, &block)
+ end
+
+ class Template
+ alias_method :render_without_tracking, :render
+ def render(view, locals, &blk)
+ rendered = view.rendered
+ rendered[:partials][self] += 1 if partial?
+ rendered[:template] ||= []
+ rendered[:template] << self
+ render_without_tracking(view, locals, &blk)
end
end
@@ -68,7 +70,7 @@ module ActionView
def initialize
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
-
+
@params = {}
send(:initialize_current_url)
end