The 0.2 release of the FreakyFreakySandbox is here. I almost had to add a third
Freaky because of some thread-related haps, but they've all been sufficient
scared and squared. Everything is now calm, like grapes on a gold platter.
gem install sandbox --source code.whytheluckystiff.net
Or there's a dist (with setup.rb inside):
You will need to patch your Ruby 1.8.5 to do this. Instructions:
The sandbox extension lets you create new Ruby environments, either restricted
or featureful. Need a safe little housing for dangerous code, with an
explode-proof shield on it? Aha, get over here. Or, need to load a conflicting
library into a safe, clean Ruby? See, look at all these reasons.
box = Sandbox.safe(:timeout => 10)
answer = box.eval(unsafe_code)
Looksee, in this release: a timer. If you can best it, I will give you a
free, no-strings-attached photograph of young Hayley Mills.
The sandbox is often prefixed FreakyFreaky, as a warning to all that this is an
extreme hack, very experimental -- practically implausible. However, it turns
out that Ruby threading kind of does this trick anyway, so it's not really that
bad. Anyway, I like the prefix and I call the shots on this one, guys.
For more instructions, steps and things, the wiki and bug tracker is: