Aha - exactly the trick I've been using in my new Table stuff!
There's no need for new classes to be able to do this - the trick is to remember that Ruby variables don't really contain any data, just pointers or references to the objects. And everything in Ruby is an object - even the RubyEdit code boxes!
Every RubyEdit has a built in instance variable called '@this', which is a reference to the editor object itself - so, for example, typing...
...is the same as plain old...
And there's nothing stopping us from passing the reference '@this' to a value output and sharing it with another RubyEdit primitive - allowing one Ruby editor to call the methods of another one.
Here's how it looks in practice...
The link passes a small array containing both the new value, and the '@this' of the master RubyEdit (copied to @master in the slaves).
There are a few precautions that you need to take though...
1) Make sure the value of @this is passed at startup - the IDs of the RubyEdits will be different every time you run FS, so can't be stored between sessions.
2) Make sure the slaves don't try to call the methods before the '@this' value is received - otherwise you'll be calling methods of 'nil' (which doesn't really have any), and cause a NoMethod error.
3) Watch out for feedback loops! - in the slaves, the output is driven only by getting a value from the master, and changing the value only calls the master - the input and output processes don't interact at all within the slave, to avoid the dreaded 'Too much processing' lockdown.
I really love the way that Ruby can do this - we can now make 'wireless' values that work in both directions like the 'preset' links do!
PS) The method 'send' is already defined - it's one of the Kernel methods available to nearly every object - so probably best avoided as a user-defined method name. Using the same name overwrites whatever method originally had that name (only for whatever class), so in some circumstances using a Kernel method name might break things!