summaryrefslogtreecommitdiff
path: root/lib/facter
diff options
context:
space:
mode:
authorJeff McCune <jeff@puppetlabs.com>2012-02-05 21:22:27 -0800
committerKen Barber <ken@bob.sh>2012-02-06 17:54:41 +0000
commit24f7095e282fc364b9d12ff26c268b4fd919f09c (patch)
tree047de98a042a38e6dfe6d3915246a5e0634f33cc /lib/facter
parent4c2bba86f81695023cec68bfe112591cfeec7c80 (diff)
(#12377) Avoid infinite loop when retrying require json
Without this patch an infinite loop will be entered if the json and rubygems libraries are not available. This patch fixes the problem by retrying the `require 'json'` only if rubygems was successfully loaded for the first time. Subsequent attempts to load rubygems will cause the LoadError exception from a missing json library to be re-raised. Thanks to Krzysztof Wilczynski for pointing out this issue.
Diffstat (limited to 'lib/facter')
-rw-r--r--lib/facter/facter_dot_d.rb4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/facter/facter_dot_d.rb b/lib/facter/facter_dot_d.rb
index 90586a9..2658dfe 100644
--- a/lib/facter/facter_dot_d.rb
+++ b/lib/facter/facter_dot_d.rb
@@ -54,8 +54,8 @@ class Facter::Util::DotD
begin
require 'json'
rescue LoadError
- require 'rubygems'
- retry
+ retry if require 'rubygems'
+ raise
end
JSON.load(File.read(file)).each_pair do |f, v|