Skip to content

Conversation

@jeffmccune
Copy link
Contributor

Puppet apply does not add the stdlib lib directory to the $LOAD_PATH.
This is a problem because the puppet_vardir fact requires the
puppet_settings library to be available for the with_puppet utility
method.

Without this patch, puppet apply will result in the following error:

$ puppet apply --modulepath=/vagrant/modules -e 'notice $puppet_vardir'
warning: Could not load fact file stdlib/lib/facter/puppet_vardir.rb: no such file to load -- facter/util/puppet_settings
notice: Scope(Class[main]):
notice: Finished catalog run in 0.01 seconds

With this patch applied, puppet apply works as expected:

$ puppet apply --modulepath=/vagrant/modules.pe -e 'notice $puppet_vardir'
notice: Scope(Class[main]): /Users/jeff/.puppet/var
notice: Finished catalog run in 0.01 seconds

This patch defensively tries to load facter/util/puppet_settings. If it cannot
load it, it falls back to trying to explicitly locate and load the library.

Once puppet is fixed such that a modules lib directory is truly in the
$LOAD_PATH, the fall back implementation will no longer be exercised since the
LoadError should not be raised.

Puppet apply does not add the stdlib lib directory to the $LOAD_PATH.
This is a problem because the puppet_vardir fact requires the
puppet_settings library to be available for the `with_puppet` utility
method.

Without this patch, puppet apply will result in the following error:

    $ puppet apply --modulepath=/vagrant/modules -e 'notice $puppet_vardir'
    warning: Could not load fact file stdlib/lib/facter/puppet_vardir.rb: no such file to load -- facter/util/puppet_settings
    notice: Scope(Class[main]):
    notice: Finished catalog run in 0.01 seconds

With this patch applied, puppet apply works as expected:

    $ puppet apply --modulepath=/vagrant/modules.pe -e 'notice $puppet_vardir'
    notice: Scope(Class[main]): /Users/jeff/.puppet/var
    notice: Finished catalog run in 0.01 seconds

This patch defensively tries to load facter/util/puppet_settings.  If it cannot
load it, it falls back to trying to explicitly locate and load the library.

Once puppet is fixed such that a modules lib directory is truly in the
$LOAD_PATH, the fall back implementation will no longer be exercised since the
LoadError should not be raised.
kbarber added a commit that referenced this pull request Mar 14, 2012
…ws_a_loaderror_when_running_with_puppet_apply

(#13091) Fix LoadError exception with puppet apply
@kbarber kbarber merged commit b4b809e into puppetlabs:2.3.x Mar 14, 2012
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants