Sha256: cbbc2e9fe57a581f05f60e56742caee4f3001772dfc3e0bc7dfe32aa081b9daf
Contents?: true
Size: 1.13 KB
Versions: 21
Compression:
Stored size: 1.13 KB
Contents
require 'erb' require 'tempfile' module Itamae module Resource class Template < RemoteFile define_attribute :variables, type: Hash, default: {} def pre_action attributes.content = RenderContext.new(self).render_file(source_file) super end private def content_file nil end def source_file_dir "templates" end def source_file_exts [".erb", ""] end class RenderContext def initialize(resource) @resource = resource @resource.attributes.variables.each_pair do |key, value| instance_variable_set("@#{key}".to_sym, value) end end def render_file(src) template = ::File.read(src) erb = if ERB.instance_method(:initialize).parameters.assoc(:key) # Ruby 2.6+ ERB.new(template, trim_mode: '-') else ERB.new(template, nil, '-') end erb.filename = src erb.result(binding) end def node @resource.recipe.runner.node end end end end end
Version data entries
21 entries across 21 versions & 1 rubygems