Thanks, I've seen that work but the trouble is I want to be able to pass in a $docroot option, or default to something if one is not there; I suppose I can probably get around it by checking if $docroot is defined and if not setting it or something?
Thanks again. On Sat, Oct 24, 2009 at 5:37 PM, Paul Lathrop <paul.lath...@gmail.com> wrote: > > On Sat, Oct 24, 2009 at 3:29 AM, Dick Davies > <rasput...@hellooperator.net> wrote: >> >> If I have something like this: >> >> ---------------------------------------- >> >> define bar($thing="/tmp/$name") { >> file { $thing: ensure => present } >> } >> >> >> class foo { somedef{ "bar": } } >> >> ---------------------------------------- >> >> puppet will try to create a file called '/tmp/foo' , not /tmp/bar. >> It seems like if I try to access $name inside the 'default arguments' >> bit of a definition, >> it's set to the enclosing class. >> >> I want to get at the name of the definition ('bar' in the above example). >> >> Once i'm inside the body of the definition, $name seems to be set correctly >> (inside templates called from the definition, etc.). >> >> [I'm writing an apache module, and want to infer a default docroot of >> '/docroot/www-vhostname', >> but allow an option to override it. >> >> how can I do that ? (and is this a bug?) > > This isn't a bug. It is a natural consequence of scoping. > > define bar() { > $thing = "/tmp/$name" > file { $thing: ensure => present } > } > > should do what you want. > > --Paul > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~----------~----~----~----~------~----~------~--~---