module Safemode
Public Class Methods
core_classes()
click to toggle source
# File lib/safemode/core_jails.rb, line 16 def core_classes klasses = [ Array, Bignum, Fixnum, Float, Hash, Range, String, Symbol, Time, NilClass, FalseClass, TrueClass ] klasses << Date if defined? Date klasses << DateTime if defined? DateTime klasses end
core_jail_methods(klass)
click to toggle source
# File lib/safemode/core_jails.rb, line 23 def core_jail_methods(klass) @@methods_whitelist[klass.name] + (@@default_methods & klass.instance_methods.map(&:to_s)) end
define_core_jail_classes()
click to toggle source
# File lib/safemode/core_jails.rb, line 3 def define_core_jail_classes core_classes.each do |klass| define_jail_class(klass).allow *core_jail_methods(klass).uniq end end
define_jail_class(klass)
click to toggle source
# File lib/safemode/core_jails.rb, line 9 def define_jail_class(klass) unless klass.const_defined?("Jail") klass.const_set("Jail", jail = Class.new(Safemode::Jail)) end klass.const_get('Jail') end
find_jail_class(klass)
click to toggle source
# File lib/safemode.rb, line 30 def find_jail_class(klass) while klass != Object return klass.const_get('Jail') if klass.const_defined?('Jail') klass = klass.superclass end Jail end
jail(obj)
click to toggle source
# File lib/safemode.rb, line 26 def jail(obj) find_jail_class(obj.class).new obj end