Ractor.shareable? is easy to use, but if it returns false I would like to be able to figure out what object is causing the data structure to not be Ractor shareable.
The context is that I'm trying to make some complex data structures in Rails deeply frozen. If they are deeply frozen they should be Ractor shareable, but Ractor.shareable? is returning false and it's hard for me to figure out why.
I would like a method that would either return all unshareable references, or a method that takes a block and unshareable references are yielded to the block.
A method like Ractor.unshareable_references? or maybe Ractor.shareable?(obj) { |not_shareable_obj| } would be very helpful for discovering why an object is not shareable.
Is ObjectSpace.reachable_objects_from usable for the use case? It's a bit tedious, but I think it's more flexible not only to get an unshareable object, but also to get the path to the object in question.