Hi Charlie, Thankyou for the additional information. :) As mentioned there would be a big cost to moving across to JRuby at this point- but I now have a much better starting point if I undertook such a move. Thanks for that. :) I wasn't familiar with FFI, but I'm quite familiar with the problem they are trying to solve. Very interesting stuff. :) There are certainly other benefits to moving to a JVM-based approach as well- as well as associated disadvantages. I'll also assume that's it's pretty much a given that I could use have Java-based plugins as well if I went this way- and this could very well be a big plus. I've certainly got some things to think about now. :) Garth On 19/12/11 13:35, Charles Oliver Nutter wrote: > JRuby does support FFI, for calling C libraries, so one approach to > using your existing code would be to write a thin C wrapper and bind > it with FFI. > > An alternative would be to write a thin JNI (Java Native Interface) > wrapper and use that from JRuby just like any Java API. The level of > effort would be similar to writing a Ruby C ext. > > In any case, keep me posted. If you decide to go with JRuby, perhaps > we can collaborate on coming up with appropriate permissions and > security policies. > > - Charlie > > On Sun, Dec 18, 2011 at 8:48 PM, Garthy D > <garthy_lmkltybr / entropicsoftware.com> wrote: >> >> Hi Charlie, >> >> I have no realm experience with JRuby, although at a glance it might be a >> closer fit with respect to securing running plugins. I might be stuck in >> this regard though as a good chunk of the app is already written, and >> C++-based. The cost of moving across might prove to be too high in my >> particular case, but at the very least it gives me something to explore and >> think about. Thankyou for sharing- this is probably not an area I would have >> thought to investigate on my own. :) >> >> Garth >> >> >> On 19/12/11 12:16, Charles Oliver Nutter wrote: >>> >>> On Sun, Dec 18, 2011 at 2:16 AM, Garthy D >>> <garthy_lmkltybr / entropicsoftware.com> wrote: >>>> >>>> >>>> Hi all, >>>> >>>> I am working on an embedded Ruby application that may support >>>> user-written >>>> Ruby plugins in the future, and I am trying to get a rough idea as to >>>> what >>>> is and isn't possible, as it will affect the design I go with. Basically, >>>> if >>>> you've worked on such a thing before, please share your experiences. :) >>> >>> >>> There's a number of folks using JRuby for this, most notable the >>> "Rails for Zombies" online course, which runs JRuby in a sandboxed >>> environment and allows students to run their code directly on the >>> server. >>> >>> I am not a fan of $SAFE at all. I don't trust it, and I don't think >>> anyone else should either. The JVM's security model is far more >>> robust, and works well to secure a JRuby instance. There are many >>> examples of secure JVM-based services running major sites, such as all >>> of apps deployed to Google AppEngine for Java. I know of no example of >>> anyone running $SAFE mode in Ruby in a real-world setting. >>> >>> I'm also looking to make JRuby's integration with the JVM security >>> model more robust in JRuby 1.7. At the very least, I'd like to have >>> equivalent built-in modes similar to SAFE levels that use JVM security >>> policies to enforce restrictions. Beyond that, I would like a full >>> complement of JVM permissions for Ruby-specific features like >>> evaluating code, reopening classes, and so on. You'll be able to >>> choose a pre-packaged SAFE-like policy, or roll your own. >>> >>> I'd love to see Ruby adopt a real security model. Until then, I'll >>> keep trying to make JRuby utilize the JVM's model better. >>> >>> - Charlie >>> >> >> >