Issue #10505 has been updated by Daniel Pittman.

Status changed from Unreviewed to Needs Decision
Assignee set to Randall Hansen

Our general handling of variables in templates is horrible, because ERB is 
fairly horrible, and has semantics that are a *long* way from what Puppet 
actually wants.  (Also, because Ruby has some exciting sharp corners here; 
never use the variable `fork` in your template, for example.)

Randall, I think this is in the UX bucket now to work out where it goes next.
----------------------------------------
Bug #10505: erb mangles if foo == "" and leaves variables undefined
https://projects.puppetlabs.com/issues/10505

Author: Jos Boumans
Status: Needs Decision
Priority: High
Assignee: Randall Hansen
Category: templates
Target version: 2.6.x
Affected Puppet version: 2.6.3
Keywords: 
Branch: 


<pre>
$ puppet --version
2.6.3
</pre>

<pre>
$ cat x.pp
define bar ( $foo = "", $zot = "" ) {
  file { '/mnt/tmp/puppet.erb/out':
    content => template( '/mnt/tmp/puppet.erb/tmpl.erb' ),
    ensure => file,
  }
}

bar { $fqdn: foo => "42", zot => "43" }
$ cat tmpl.erb 

foo 1: <%= foo %>
zot 1: <%= zot %>

<% if foo == "" %>
<% foo = 1 %>
<% end %>

foo 2: <%= foo %>
zot 2: <%= zot %>
$ puppet x.pp
notice: /Stage[main]//Bar[cc001.krxd.net]/File[/mnt/tmp/puppet.erb/out]/ensure: 
defined content as '{md5}c776b25cce50fdc968696030b77e9a4d'
$ cat out

foo 1: 42
zot 1: 43



foo 2: 
zot 2: 43
</pre>

################

Confirmed also in 2.7.x, the work around is:
<% foo = scope.lookupvar('foo') || '1' %>



-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://projects.puppetlabs.com/my/account

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Bugs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-bugs?hl=en.

Reply via email to