Issue #4748 has been updated by Felix Frank.

The discussion was quite enlightening, so I devised the following workaround:

<pre>
class base {
        $variable = ""
        file{"/tmp/foo": content => "base"}
}

class foo inherits base {
        notify{$base::variable:}
        File["/tmp/foo"] { content => $base::variable }
}

class special {
        $base::variable += "special"
        include foo
}

include base
include special
</pre>

Granted, it includes some syntactical overhead and significantly reduces 
manifest readability, but it adequately works around the scoping problem.

Successfully tested with 0.25.5 and 2.6.0.
----------------------------------------
Bug #4748: Variable scope confusing when including subclasses
http://projects.puppetlabs.com/issues/4748

Author: Felix Frank
Status: Needs design decision
Priority: Normal
Assignee: Paul Berry
Category: language
Target version: 
Affected version: development
Keywords: variables, scope, inheritance
Branch: 


When including a class that inherits another, variables used only in the 
inheriting class still seem to be scoped to the context of the original include 
of the base class.

<pre>
class base {
    file{"/tmp/foo": content => "base"}
}

class foo inherits base {
    notify{$variable:}
    File["/tmp/foo"] { content => $variable }
}

class special {
    $variable = "special"
    include foo
}

include base
include special
</pre>

With thanks to Volcane for the cleaned up example code.

Reproduced with versions 0.25.5 and 2.6.1rc4.


-- 
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