In principle, this isn’t hard to make happen. I could imagine a
universal delegator approach where you cruft up a generic
implementation of IDispatch and use Ruby’s reflection capabilities to
find methods to call. The only wierd stuff that you might have to
worry about is mapping named parameters and marshaling SAFEARRAYS.
The tougher thing is dealing with threading / apartment model
compatibility. You could probably only make the STA threading model
work for the generic case of a single STA in a process due to Ruby not
being thread safe.
In RubyCLR I have to worry about the case where multiple STA threads
attempt to call into Ruby - my proxies have to disallow the method
call and raise a CLR exception.
It would be really, really nice once the Ruby interpreter is thread safe