2012-08-27 61 views
5

我正在爲Rails項目實現插件架構。插件體系結構包括插件編寫者編寫要在服務器上執行的Ruby代碼的能力。我想使這個安全,以便插件編寫者沒有寫破壞性代碼的能力。在有限的環境中執行ruby代碼

我想我需要做的,儘管我打開其他選項,但是在具有有限範圍的隔離環境中爲插件執行Ruby代碼。我正在思考therubyracer gem的精神,但我想安全地執行Ruby而不是JavaScript。

我找不出一個好辦法做到這一點。我想用eval與有限的bindings對象,但我認爲這將是很難eval幾個文件,我不認爲我可以充分限制綁定。例如,我不希望插件能夠在模型上執行類似destroy_all的操作,或者在應用程序中使用猴子補丁存在的代碼。

我對這個很着迷。有人有主意嗎?

+0

你可能有一些運氣這個問題:http://stackoverflow.com/questions/406833/language-in-a-sandbox-在護欄 – Earlz

回答