2012-08-27 7 views
5

Ich implementiere eine Plugin-Architektur für ein Rails-Projekt. Die Plugin-Architektur enthält die Möglichkeit für Plugin-Autoren, Ruby-Code zu schreiben, der auf dem Server ausgeführt wird. Ich möchte dies so sicher machen, dass Plugin-Writer nicht die Möglichkeit haben, destruktiven Code zu schreiben.Ausführen von Ruby-Code in einer eingeschränkten Umgebung

Ich denke, was ich tun muss, obwohl ich offen für andere Optionen bin, führen Sie den Ruby-Code für das Plugin in einer isolierten Umgebung, die einen begrenzten Umfang hat. Ich denke an etwas im Geist des therubyracer Edelsteines, aber ich möchte Ruby anstelle von JavaScript sicher ausführen.

Ich kann nicht einen guten Weg, dies zu tun. Ich dachte an eval mit einem begrenzten bindings Objekt, aber ich denke, es wäre schwer zu eval mehrere Dateien und ich glaube nicht, dass ich die Bindungen angemessen begrenzen kann. Zum Beispiel möchte ich nicht, dass ein Plugin in der Lage ist, etwas wie einen destroy_all auf einem Modell oder einen affe-patch existierenden Code in der App zu machen.

Ich bin ziemlich ratlos mit diesem. Hat jemand Ideen?

+0

Sie könnten etwas Glück mit dieser Frage: http://stackoverflow.com/questions/406833/language-in-a-sandbox- in Schienen – Earlz

Antwort

Verwandte Themen