Class | ActionView::CompiledTemplates |
In: |
vendor/rails/actionpack/lib/action_view/compiled_templates.rb
|
Parent: | Module |
CompiledTemplates modules hold methods that have been compiled. Templates are compiled into these methods so that they do not need to be read and parsed for each request.
Each template may be compiled into one or more methods. Each method accepts a given set of parameters which is used to implement local assigns passing.
To use a compiled template module, create a new instance and include it into the class in which you want the template to be rendered.
method_names | [R] |
# File vendor/rails/actionpack/lib/action_view/compiled_templates.rb, line 15 15: def initialize 16: @method_names = Hash.new do |hash, key| 17: hash[key] = "__compiled_method_#{(hash.length + 1)}" 18: end 19: @mtimes = {} 20: end
Compile the provided source code for the given argument names and with the given initial line number. The identifier should be unique to this source.
The file_name, if provided will appear in backtraces. If not provided, the file_name defaults to the identifier.
This method will return the selector for the compiled version of this method.
# File vendor/rails/actionpack/lib/action_view/compiled_templates.rb, line 46 46: def compile_source(identifier, arg_names, source, initial_line_number = 0, file_name = nil) 47: file_name ||= identifier 48: name = method_names[full_key(identifier, arg_names)] 49: arg_desc = arg_names.empty? ? '' : "(#{arg_names * ', '})" 50: fake_file_name = "#{file_name}#{arg_desc}" # Include the arguments for this version (for now) 51: 52: method_def = wrap_source(name, arg_names, source) 53: 54: begin 55: module_eval(method_def, fake_file_name, initial_line_number) 56: @mtimes[full_key(identifier, arg_names)] = Time.now 57: rescue Exception => e # errors from compiled source 58: e.blame_file! identifier 59: raise 60: end 61: name 62: end
Return the full key for the given identifier and argument names
# File vendor/rails/actionpack/lib/action_view/compiled_templates.rb, line 23 23: def full_key(identifier, arg_names) 24: [identifier, arg_names] 25: end
Return the time at which the method for the given identifier and argument names was compiled.
# File vendor/rails/actionpack/lib/action_view/compiled_templates.rb, line 35 35: def mtime(identifier, arg_names) 36: @mtimes[full_key(identifier, arg_names)] 37: end
Return the selector for this method or nil if it has not been compiled
# File vendor/rails/actionpack/lib/action_view/compiled_templates.rb, line 28 28: def selector(identifier, arg_names) 29: key = full_key(identifier, arg_names) 30: method_names.key?(key) ? method_names[key] : nil 31: end