class ActionView::Template
def compile!(view) #:nodoc:
just once and removes the source after it is compiled.
Compile a template. This method ensures a template is compiled
def compile!(view) #:nodoc: return if @compiled # Templates can be used concurrently in threaded environments # so compilation and any instance variable modification must # be synchronized @compile_mutex.synchronize do # Any thread holding this lock will be compiling the template needed # by the threads waiting. So re-check the @compiled flag to avoid # re-compilation return if @compiled if view.is_a?(ActionView::CompiledTemplates) mod = ActionView::CompiledTemplates else mod = view.singleton_class end instrument("!compile_template") do compile(mod) end # Just discard the source if we have a virtual path. This # means we can get the template back. @source = nil if @virtual_path @compiled = true end end