diff options
Diffstat (limited to 'lib/puppet/parser/functions.rb')
-rw-r--r-- | lib/puppet/parser/functions.rb | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/lib/puppet/parser/functions.rb b/lib/puppet/parser/functions.rb index cec7c02c5..38ba0da9f 100644 --- a/lib/puppet/parser/functions.rb +++ b/lib/puppet/parser/functions.rb @@ -125,22 +125,16 @@ module Functions require 'erb' vals.collect do |file| - unless file =~ /^#{File::SEPARATOR}/ - file = File.join(Puppet[:templatedir], file) - end - - unless File.exists?(file) - raise Puppet::ParseError, - "Could not find template %s" % file - end - - template = ERB.new(File.read(file)) + # Use a wrapper, so the template can't get access to the full + # Scope object. + wrapper = Puppet::Parser::Scope::TemplateWrapper.new(self, file) begin - template.result(binding) + wrapper.result() rescue => detail - raise Puppet::ParseError, "Could not interpret template %s: %s" % - [file, detail] + raise Puppet::ParseError, + "Failed to parse template %s: %s" % + [file, detail] end end.join("") end |