预定义的一组对象必须聚合到一个新对象中。不过,我希望用户为此指定一个自定义函数。在Ruby/Rails应用程序中允许用户定义的脚本
现在幼稚的做法是
def foo; end
objects = [1,2,3]
# result = eval(user_script)
result = eval("objects.inject {|sum, n| sum + n }")
我明显不想做!我读了约$SAFE = 4
(见here),但我不确定这是否足够。尤其是因为用户定义的脚本仍然可以调用foo
等其他功能。我只想允许访问基本的非危险的Ruby核心函数。
有没有Ruby允许安全执行用户定义脚本的设施?我不需要是Ruby语法。不过,这很好。
这太棒了!在rubyverse中很难找到这样的事情。 – 2009-10-18 18:08:44