2012-08-27 18 views
5

Estoy implementando una arquitectura de complemento en un proyecto de Rails. La arquitectura del complemento incluye la capacidad para que los escritores de plugins escriban el código de Ruby para que se ejecute en el servidor. Quiero asegurar esto para que los escritores de plugins no tengan la capacidad de escribir código destructivo.Ejecutar código de ruby ​​en un entorno limitado

Creo que lo que tengo que hacer, aunque estoy abierto a otras opciones, es ejecutar el código de Ruby para el complemento en un entorno aislado que tiene un alcance limitado. Estoy pensando en algo en el espíritu de la gema therubyracer, pero quiero ejecutar Ruby de forma segura en lugar de JavaScript.

No puedo encontrar una buena manera de hacerlo. Pensé en usar eval con un objeto limitado bindings, pero creo que sería difícil eval varios archivos y no creo que pueda limitar adecuadamente las ataduras. Por ejemplo, no quiero que un complemento pueda hacer algo como un destroy_all en un modelo, o un parche de código existente en la aplicación.

Estoy bastante perplejo con esta. ¿Alguien tiene alguna idea?

+0

Es posible que haya un poco de suerte con esta pregunta: http://stackoverflow.com/questions/406833/language-in-a-sandbox- carriles – Earlz

Respuesta

Cuestiones relacionadas