預定義的一組對象必須聚合到一個新對象中。不過,我希望用戶爲此指定一個自定義函數。在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