From c1b5c7f515a0add663fb532859d91e28ef37a971 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Sun, 16 Jan 2011 14:27:24 -0800 Subject: (#5913) Fix Puppet::Application.find constant lookup behavior Puppet::Application.find now only looks in the Puppet::Application namespace for the given constant. --- lib/puppet/application.rb | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/puppet/application.rb b/lib/puppet/application.rb index f0159a65d..17ad69cee 100644 --- a/lib/puppet/application.rb +++ b/lib/puppet/application.rb @@ -212,10 +212,17 @@ class Application end def find(name) - self.const_get(name.to_s.capitalize) - rescue + klass = name.to_s.capitalize + + # const_defined? is used before const_get since const_defined? will only + # check within our namespace, whereas const_get will check ancestor + # trees as well, resulting in unexpected behaviour. + if !self.const_defined?(klass) puts "Unable to find application '#{name.to_s}'." Kernel::exit(1) + end + + self.const_get(klass) end def [](name) -- cgit