diff --git a/tools/ruby/BUILD b/tools/ruby/BUILD
new file mode 100644
index 0000000..426a9f1
--- /dev/null
+++ b/tools/ruby/BUILD
@@ -0,0 +1,5 @@
+py_binary(
+  name = 'standalone_ruby',
+  srcs = ['standalone_ruby.py'],
+  visibility = ['//visibility:public'],
+)
diff --git a/tools/ruby/standalone_ruby.py b/tools/ruby/standalone_ruby.py
new file mode 100644
index 0000000..0c574e0
--- /dev/null
+++ b/tools/ruby/standalone_ruby.py
@@ -0,0 +1,75 @@
+#!/usr/bin/python
+
+import zlib, sys, os, stat
+
+with file(sys.argv[2], "wb+") as outf:
+  outf.write("""#!/usr/bin/env ruby
+require "zlib"
+
+def zip_file_binding()
+  binding()
+end
+
+module Kernel
+  class ZipRequireRecord
+    attr_accessor :fname, :val
+    def initialize(fname, val)
+      @fname = fname
+      @val = val
+    end
+    def do_require()
+      return false if !@val
+      eval(@val, binding = zip_file_binding(), filename="//@bazel/" + @fname)
+      @val = nil
+      return true
+    end
+  end
+  BAZEL_START_ENTRY = "/@bazel/"
+  ZIP_TEMP_OBJS = {}
+  def require_relative(relative_feature)
+    file = caller.first.split(/:\d/,2).first
+    raise LoadError, "require_relative is called in #{$1}" if /\A\((.*)\)/ =~ file
+    require File.expand_path(relative_feature, File.dirname(file))
+  end
+  def require_zip(moduleName)
+    if moduleName.start_with?(BAZEL_START_ENTRY)
+      moduleName = moduleName[BAZEL_START_ENTRY.length..-1]
+    end
+    zip_obj = ZIP_TEMP_OBJS[moduleName]
+    if not zip_obj and !moduleName.end_with?('.rb')
+      zip_obj = ZIP_TEMP_OBJS[moduleName + '.rb']
+    end
+    return zip_obj.do_require() if (zip_obj)
+    return pre_zip_load_require(moduleName)
+  end
+  alias :pre_zip_load_require :require
+  alias :require :require_zip
+  def init_app(main_fname)
+    $0 = "//@bazel/" + main_fname
+    Kernel.require_zip(main_fname)
+  end
+  def register_inline_file(fname, data)
+    raise if ZIP_TEMP_OBJS.has_key?(fname)
+    ZIP_TEMP_OBJS[fname] = Kernel::ZipRequireRecord.new(fname, data.force_encoding("UTF-8"))
+  end
+end
+
+my_data = Zlib.inflate(DATA.read())
+""")
+
+  blob_data = []
+  offset = 0
+  with file(sys.argv[1], 'r') as infile:
+    for line in infile.xreadlines():
+      file_outname, file_binname = line.strip().split('|')
+      with file(file_binname, 'r') as obj_file:
+        obj = obj_file.read()
+      blob_data.append(obj)
+      new_off = offset + len(obj)
+      outf.write("Kernel.register_inline_file(%s, my_data.slice(%s...%s))\n" %
+                 (repr(file_outname), offset, new_off))
+      offset = new_off
+
+  outf.write("Kernel.init_app(%s)\n" % repr(sys.argv[3]))
+  outf.write("__END__\n")
+  outf.write(zlib.compress("".join(blob_data)))
