After thinking about this piece a bit, it might be a bit simpler to make initialized_components a hash, where the key is the identifier. Every component must have a unique identifier, so that's a bit more reliable than overloading the == operator.

Something like this would suffice, I think:

  self.initialized_components[component.identifier] || component

Does that make sense?