Module: Chef::Mixin::Template::ChefContext
- Defined in:
- lib/chef/mixin/template.rb
Instance Method Summary collapse
- #node ⇒ Object
-
#render(partial_name, options = {}) ⇒ Object
Takes the name of the partial, plus a hash of options.
Instance Method Details
#node ⇒ Object
27 28 29 30 31 |
# File 'lib/chef/mixin/template.rb', line 27 def node return @node if @node raise "Could not find a value for node. If you are explicitly setting variables in a template, " + "include a node variable if you plan to use it." end |
#render(partial_name, options = {}) ⇒ Object
Takes the name of the partial, plus a hash of options. Returns a string that contains the result of the evaluation of the partial.
All variables from the parent template will be propagated down to the partial, unless you pass the variables
option (see below).
Valid options are:
- :local
-
If true then the partial name will be interpreted as the path to a file on the local filesystem; if false (the default) it will be looked up in the cookbook according to the normal rules for templates.
- :source
-
If specified then the partial will be looked up with this name or path (according to the
local
option) instead ofpartial_name
. - :cookbook
-
Search for the partial in the provided cookbook instead of the cookbook that contains the top-level template.
- :variables
-
A Hash of variable_name => value that will be made available to the partial. If specified, none of the variables from the master template will be, so if you need them you will need to propagate them explicitly.
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/chef/mixin/template.rb', line 56 def render(partial_name, = {}) raise "You cannot render partials in this context" unless @template_finder if variables = .delete(:variables) context = {} context.merge!(variables) context[:node] = @node context[:template_finder] = @template_finder else context = self.dup end template_location = @template_finder.find(partial_name, ) eruby = Erubis::Eruby.new(IO.read(template_location)) output = eruby.evaluate(context) end |