lib/origen/sub_blocks.rb in origen-0.55.0 vs lib/origen/sub_blocks.rb in origen-0.55.1

- old
+ new

@@ -476,19 +476,26 @@ end def klass @klass ||= begin class_name = attributes.delete(:class_name) + tmp_class = nil if class_name begin - klass = eval("::#{owner.namespace}::#{class_name}") - rescue NameError + tmp_class = "::#{owner.namespace}::#{class_name}" + klass = eval(tmp_class) + rescue NameError => e + raise if e.message !~ /^uninitialized constant (.*)$/ || tmp_class !~ /#{Regexp.last_match(1)}/ begin + tmp_class = class_name.to_s klass = eval(class_name) - rescue NameError + rescue NameError => e + raise if e.message !~ /^uninitialized constant (.*)$/ || tmp_class !~ /#{Regexp.last_match(1)}/ begin - klass = eval("#{owner.class}::#{class_name}") - rescue NameError + tmp_class = "#{owner.class}::#{class_name}" + klass = eval(tmp_class) + rescue NameError => e + raise if e.message !~ /^uninitialized constant (.*)$/ || tmp_class !~ /#{Regexp.last_match(1)}/ puts "Could not find class: #{class_name}" raise 'Unknown sub block class!' end end end