aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_view/renderer.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/lib/action_view/renderer.rb')
-rw-r--r--actionpack/lib/action_view/renderer.rb29
1 files changed, 29 insertions, 0 deletions
diff --git a/actionpack/lib/action_view/renderer.rb b/actionpack/lib/action_view/renderer.rb
new file mode 100644
index 0000000000..e6c64d2749
--- /dev/null
+++ b/actionpack/lib/action_view/renderer.rb
@@ -0,0 +1,29 @@
+module ActionView
+ module Renderer
+ # TODO: Local assigns should not be tied to template instance
+ attr_accessor :locals
+
+ # TODO: These readers should be private
+ attr_reader :filename, :source, :handler, :method_key, :method
+
+ def render
+ prepare!
+ @handler.render(self)
+ end
+
+ private
+ def prepare!
+ unless @prepared
+ @view.send(:evaluate_assigns)
+ @view.current_render_extension = @extension
+
+ if @handler.compilable?
+ @handler.compile_template(self) # compile the given template, if necessary
+ @method = @view.method_names[method_key] # Set the method name for this template and run it
+ end
+
+ @prepared = true
+ end
+ end
+ end
+end