strapyourself.in and flouri.sh
How to set up the JRuby sandbox
April 4th, 2009
The JRuby Sandbox is simply a rewrite of why's original sandbox gem in JRuby. It's much less of a hack than the C implementation, and generally considered to be more safe. Here's how I set it up:
- Download and install the latest JRuby binaries from CodeHaus (I tested with 1.1.5).
- Download the source of the javasand jruby gem from the JRuby addons project
svn checkout http://jruby-extras.rubyforge.org/svn/trunk/javasand - Compile the gem:
ant
BUILD SUCCESSFUL
If the build fails, it might be because it can't find the JRuby classes. You'll need to find jruby.jar and then add a line to build.xml inside the "build.classpath" path:
<fileset dir="/path/to/jruby/jars" includes="*.jar" /> - Package up the gem:
jgem build javasand.gemspec - Install the gem:
sudo jgem install javasand-0.0.2.gem - Test the sandbox with
jirb -rubygemsrequire "sandbox" Sandbox.safe.eval("2+2") # yields 4
As you can see above, I had to compile the gem from source. The binary gem of javasand
from rubyforge failed with the following exception:
irb(main):001:0> require "sandbox"
=> true
irb(main):002:0> Sandbox.safe
org.jruby.ext.sandbox.Sandkit:714:in `removeMethods': java.lang.NoSuchMethodError: org.jruby.RubyModule.removeMethod(Ljava/lang/String;)V
Sorry, comments are closed for this article.