Module ActionView::TemplateHandlers::Compilable
In: vendor/rails/actionpack/lib/action_view/template_handlers/compilable.rb

Methods

Classes and Modules

Module ActionView::TemplateHandlers::Compilable::ClassMethod

Public Class methods

[Source]

    # File vendor/rails/actionpack/lib/action_view/template_handlers/compilable.rb, line 5
 5:       def self.included(base)
 6:         base.extend ClassMethod
 7: 
 8:         # Map method names to their compile time
 9:         base.cattr_accessor :compile_time
10:         base.compile_time = {}
11: 
12:         # Map method names to the names passed in local assigns so far
13:         base.cattr_accessor :template_args
14:         base.template_args = {}
15: 
16:         # Count the number of inline templates
17:         base.cattr_accessor :inline_template_count
18:         base.inline_template_count = 0
19:       end

Public Instance methods

Compile and evaluate the template‘s code

[Source]

    # File vendor/rails/actionpack/lib/action_view/template_handlers/compilable.rb, line 33
33:       def compile_template(template)
34:         return unless compile_template?(template)
35: 
36:         render_symbol = assign_method_name(template)
37:         render_source = create_template_source(template, render_symbol)
38:         line_offset   = self.template_args[render_symbol].size + self.line_offset
39: 
40:         begin
41:           file_name = template.filename || 'compiled-template'
42:           ActionView::Base::CompiledTemplates.module_eval(render_source, file_name, -line_offset)
43:         rescue Exception => e  # errors from template code
44:           if @view.logger
45:             @view.logger.debug "ERROR: compiling #{render_symbol} RAISED #{e}"
46:             @view.logger.debug "Function body: #{render_source}"
47:             @view.logger.debug "Backtrace: #{e.backtrace.join("\n")}"
48:           end
49: 
50:           raise ActionView::TemplateError.new(template, @view.assigns, e)
51:         end
52: 
53:         self.compile_time[render_symbol] = Time.now
54:         # logger.debug "Compiled template #{file_name || template}\n  ==> #{render_symbol}" if logger
55:       end

[Source]

    # File vendor/rails/actionpack/lib/action_view/template_handlers/compilable.rb, line 28
28:       def render(template)
29:         @view.send :execute, template
30:       end

[Validate]