Files
vagrant-libvirt/lib/vagrant-libvirt/util/erb_template.rb
Vít Ondruch 0ecb9cc94f Use Vagrant::Util::TemplateRenderer instead of Erubis. (#1144)
Erubis is dead upstream, therefore it is good idea to avoid its usage.

Also, this allows to drop explicit dependency on Erubis, which is not
specified anywhere and may cause issues when Vagrant changes its
renderer.

Fixes #1142.
2020-10-03 21:04:59 +01:00

22 lines
873 B
Ruby

module VagrantPlugins
module ProviderLibvirt
module Util
module ErbTemplate
# TODO: remove and use nokogiri builder
def to_xml(template_name = nil, data = binding)
erb = template_name || self.class.to_s.split('::').last.downcase
path = File.join(File.dirname(__FILE__), '..', 'templates')
template = "#{erb}.xml"
# TODO: according to erubis documentation, we should rather use evaluate and forget about
# binding since the template may then change variables values
Vagrant::Util::TemplateRenderer.render_with(:render, template, template_root: path) do |renderer|
iv = data.eval ("instance_variables.collect {|i| [i, instance_variable_get(i.to_sym)]}")
iv.each {|k, v| renderer.instance_variable_set(k, v)}
end
end
end
end
end
end