Skip to content

Commit

Permalink
don't throw excpetion for delegate classes (generators)
Browse files Browse the repository at this point in the history
  • Loading branch information
Matt Conway committed Oct 20, 2009
1 parent f85f8a6 commit 54dd68a
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 7 deletions.
11 changes: 5 additions & 6 deletions lib/lumber/lumber.rb
Expand Up @@ -139,12 +139,11 @@ def self.derive_lumber_logger(clazz)
# logger of the new class
parent = clazz.superclass
while ! parent.nil?
if parent.method_defined?(:logger) && parent.method_defined?(:logger=) && parent.logger
parent_is_registered = @@registered_loggers.values.find {|v| parent.logger.fullname.index(v) == 0}
if parent_is_registered
clazz.logger = Log4r::Logger.new("#{parent.logger.fullname}::#{clazz.name}")
break
end
parent_logger_name = parent.logger.fullname rescue ''
parent_is_registered = @@registered_loggers.values.find {|v| parent_logger_name.index(v) == 0}
if parent_is_registered && parent.method_defined?(:logger=)
clazz.logger = Log4r::Logger.new("#{parent_logger_name}::#{clazz.name}")
break
end
parent = parent.superclass
end
Expand Down
14 changes: 13 additions & 1 deletion test/lumber_test.rb
@@ -1,5 +1,5 @@
require 'test_helper'

require 'delegate'

def new_class(class_name, super_class=nil, super_module=nil)
s = "class #{class_name}"
Expand Down Expand Up @@ -61,6 +61,18 @@ def assert_valid_logger(class_name, logger_name)
assert Foo3.new.logger == Foo1.logger
end

should "no logger when parent is via delegate class" do
assert !defined?(Foo1)
assert !defined?(Foo2)
assert !defined?(Foo3)
Lumber.setup_logger_hierarchy("Foo1", "root::foo1")
eval "class ::Foo1; end"
eval "class ::Foo2 < DelegateClass(Foo1); end"
eval "class ::Foo3 < Foo2; end"
assert_valid_logger('Foo1', "root::foo1")
assert ! defined?(Foo3.logger)
end

should "allow registering independent loggers for classes in a hierarchy" do
assert !defined?(Foo1)
assert !defined?(Foo2)
Expand Down

0 comments on commit 54dd68a

Please sign in to comment.