I have a program that will create a lot of objects, mainly of type
SomeDocumentation::Host and SomeDocumentation::Role.

Since the Role objects typically create a lot of Host objects, and the
other way around, I tried to be clever, and look up objects that
already exists with the same value of "name", since the initialize
reads a bit from disk.

I've tried tried to solve it with the following code snippet:

  def initialize(name)

    ObjectSpace.each_object(self.class) do |anObject|
      return anObject if anObject.name == name
    end

    <do the real initialization, since we do not have an object with
    the same .name attribute/method/whatever yet>

  end

....but when it is included in the Host initialize method, I end up
with a lot of empty Host objects for the second (third, fourth, and so
on) Role object when doing this from the main script:

roles.uniq.each do |role|
  aRole = SomeDocumentation::Role.new(role)
  puts aRole.documentation
end

Does anyone see what I'm doing wrong?

-- 
Sandbeck Mathisen - http://fnord.no
  Trust the Computer, the Computer is your Friend