aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_view
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/lib/action_view')
-rw-r--r--actionpack/lib/action_view/render/rendering.rb6
-rw-r--r--actionpack/lib/action_view/template/renderable.rb7
-rw-r--r--actionpack/lib/action_view/template/template.rb2
-rw-r--r--actionpack/lib/action_view/template/text.rb9
4 files changed, 19 insertions, 5 deletions
diff --git a/actionpack/lib/action_view/render/rendering.rb b/actionpack/lib/action_view/render/rendering.rb
index a02c058725..68b343de77 100644
--- a/actionpack/lib/action_view/render/rendering.rb
+++ b/actionpack/lib/action_view/render/rendering.rb
@@ -62,20 +62,18 @@ module ActionView
end
def _render_template(template, local_assigns = {})
- template.compile(local_assigns)
-
@_render_stack.push(template)
_evaluate_assigns_and_ivars
_set_controller_content_type(template.mime_type) if template.respond_to?(:mime_type)
- result = send(template.method_name(local_assigns), local_assigns) do |*names|
+ result = template.render(self, local_assigns) do |*names|
if !instance_variable_defined?(:"@content_for_#{names.first}") &&
instance_variable_defined?(:@_proc_for_layout) && (proc = @_proc_for_layout)
capture(*names, &proc)
elsif instance_variable_defined?(ivar = :"@content_for_#{names.first || :layout}")
instance_variable_get(ivar)
- end
+ end
end
@_render_stack.pop
diff --git a/actionpack/lib/action_view/template/renderable.rb b/actionpack/lib/action_view/template/renderable.rb
index 35c832aaba..fde37544f3 100644
--- a/actionpack/lib/action_view/template/renderable.rb
+++ b/actionpack/lib/action_view/template/renderable.rb
@@ -4,6 +4,13 @@ module ActionView
module Renderable #:nodoc:
extend ActiveSupport::Memoizable
+ def render(view, locals)
+ compile(locals)
+ view.send(method_name(locals), locals) {|*args| yield(*args) }
+ end
+
+ private
+
def filename
'compiled-template'
end
diff --git a/actionpack/lib/action_view/template/template.rb b/actionpack/lib/action_view/template/template.rb
index 1ee073c3e9..73e319b489 100644
--- a/actionpack/lib/action_view/template/template.rb
+++ b/actionpack/lib/action_view/template/template.rb
@@ -206,7 +206,7 @@ module ActionView #:nodoc:
def load!
@cached = true
- freeze
+ # freeze
end
private
diff --git a/actionpack/lib/action_view/template/text.rb b/actionpack/lib/action_view/template/text.rb
new file mode 100644
index 0000000000..f81174d707
--- /dev/null
+++ b/actionpack/lib/action_view/template/text.rb
@@ -0,0 +1,9 @@
+module ActionView #:nodoc:
+ class TextTemplate < String #:nodoc:
+
+ def render(*) self end
+
+ def exempt_from_layout?() false end
+
+ end
+end