Skip to content

Commit

Permalink
Made ActionView::Base#first_render a little more private. And added _…
Browse files Browse the repository at this point in the history
…last_render to track the most recent render. Will fix #609 as a side effect. [#609 state:resolved]
  • Loading branch information
josh committed Jul 13, 2008
1 parent 99cc85b commit e0fef66
Show file tree
Hide file tree
Showing 8 changed files with 25 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,11 @@ def assert_redirected_to(options = {}, message=nil)
#
def assert_template(expected = nil, message=nil)
clean_backtrace do
rendered = expected ? @response.rendered_file(!expected.include?('/')) : @response.rendered_file
rendered = @response.rendered_template.to_s
msg = build_message(message, "expecting <?> but rendering with <?>", expected, rendered)
assert_block(msg) do
if expected.nil?
!@response.rendered_with_file?
@response.rendered_template ? true : false
else
rendered.match(expected)
end
Expand Down
15 changes: 4 additions & 11 deletions actionpack/lib/action_controller/test_process.rb
Original file line number Diff line number Diff line change
Expand Up @@ -205,17 +205,10 @@ def redirect_url_match?( pattern )
p.match(redirect_url) != nil
end

# Returns the template path of the file which was used to
# render this response (or nil)
def rendered_file(with_controller = false)
if template.first_render
template.first_render.to_s
end
end

# Was this template rendered by a file?
def rendered_with_file?
!rendered_file.nil?
# Returns the template of the file which was used to
# render this response (or nil)
def rendered_template
template._first_render
end

# A shortcut to the flash. Returns an empyt hash if no session flash exists.
Expand Down
6 changes: 3 additions & 3 deletions actionpack/lib/action_view/base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -159,11 +159,11 @@ def initialize(paths, path, template_format = nil)
class Base
include ERB::Util

attr_accessor :base_path, :assigns, :template_extension, :first_render
attr_accessor :base_path, :assigns, :template_extension
attr_accessor :controller
attr_accessor :_first_render, :_last_render

attr_writer :template_format
attr_accessor :current_render_extension

attr_accessor :output_buffer

Expand Down Expand Up @@ -313,7 +313,7 @@ def pick_template(template_path)
template
elsif template = self.view_paths[template_file_name]
template
elsif first_render && template = self.view_paths["#{template_file_name}.#{first_render.extension}"]
elsif _first_render && template = self.view_paths["#{template_file_name}.#{_first_render.extension}"]
template
elsif template_format == :js && template = self.view_paths["#{template_file_name}.html"]
@template_format = :html
Expand Down
3 changes: 1 addition & 2 deletions actionpack/lib/action_view/helpers/cache_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,7 @@ module CacheHelper
# <i>Topics listed alphabetically</i>
# <% end %>
def cache(name = {}, options = nil, &block)
handler = Template.handler_class_for_extension(current_render_extension.to_sym)
handler.new(@controller).cache_fragment(block, name, options)
_last_render.handler.new(@controller).cache_fragment(block, name, options)
end
end
end
Expand Down
4 changes: 2 additions & 2 deletions actionpack/lib/action_view/renderable.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ def compiled_source
end

def render(view, local_assigns = {})
view.first_render ||= self
view._first_render ||= self
view._last_render = self
view.send(:evaluate_assigns)
view.current_render_extension = extension
compile(local_assigns) if handler.compilable?
handler.new(view).render(self, local_assigns)
end
Expand Down
6 changes: 3 additions & 3 deletions actionpack/test/controller/action_pack_assertions_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -328,11 +328,11 @@ def test_flash_have_nots
# check if we were rendered by a file-based template?
def test_rendered_action
process :nothing
assert !@response.rendered_with_file?
assert_nil @response.rendered_template

process :hello_world
assert @response.rendered_with_file?
assert 'hello_world', @response.rendered_file
assert @response.rendered_template
assert 'hello_world', @response.rendered_template.to_s
end

# check the redirection location
Expand Down
8 changes: 8 additions & 0 deletions actionpack/test/controller/caching_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -664,6 +664,14 @@ def test_fragment_caching_in_partials
assert_match "Fragment caching in a partial", @store.read('views/test.host/functional_caching/html_fragment_cached_with_partial')
end

def test_render_inline_before_fragment_caching
get :inline_fragment_cached
assert_response :success
assert_match /Some inline content/, @response.body
assert_match /Some cached content/, @response.body
assert_match "Some cached content", @store.read('views/test.host/functional_caching/inline_fragment_cached')
end

def test_fragment_caching_in_rjs_partials
xhr :get, :js_fragment_cached_with_partial
assert_response :success
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<%= render :inline => 'Some inline content' %>
<% cache do %>Some cached content<% end %>

0 comments on commit e0fef66

Please sign in to comment.