Skip to content

Instantly share code, notes, and snippets.

@nusco
Created August 18, 2010 15:30
Show Gist options
  • Save nusco/535138 to your computer and use it in GitHub Desktop.
Save nusco/535138 to your computer and use it in GitHub Desktop.
Spell: Sandbox
# ==============
# Spell: Sandbox
# ==============
# Execute untrusted code in a safe environment.
def sandbox(&code)
proc {
$SAFE = 2
yield
}.call
end
begin
sandbox { File.delete 'a_file' }
rescue Exception => ex
ex # => #<SecurityError: Insecure operation `delete' at level 2>
end
# For more information: http://www.pragprog.com/titles/ppmetr/metaprogramming-ruby
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment