2012-08-27 37 views
5

Tôi đang triển khai kiến ​​trúc plugin cho dự án Rails. Kiến trúc plugin bao gồm khả năng cho các nhà văn plugin viết mã Ruby được thực thi trên máy chủ. Tôi muốn làm điều này an toàn để các nhà văn plugin không có khả năng viết mã phá hoại.Thực hiện mã ruby ​​trong môi trường hạn chế

Tôi nghĩ rằng những gì tôi cần làm, mặc dù tôi đang mở cho các tùy chọn khác, đang thực thi mã Ruby cho plugin trong môi trường bị cô lập có phạm vi giới hạn. Tôi đang suy nghĩ về một cái gì đó trong tinh thần của đá quý therubyracer nhưng tôi muốn thực hiện một cách an toàn Ruby thay vì JavaScript.

Tôi không thể tìm ra cách tốt để thực hiện việc này. Tôi đã nghĩ đến việc sử dụng eval với một đối tượng có giới hạn là bindings, nhưng tôi nghĩ rằng sẽ khó khăn đối với eval một số tệp và tôi không nghĩ rằng tôi có thể giới hạn đầy đủ các ràng buộc. Ví dụ, tôi không muốn một plugin để có thể làm một cái gì đó như một destroy_all trên một mô hình, hoặc khỉ-vá mã hiện có trong ứng dụng.

Tôi khá bối rối với điều này. Ai có ý tưởng gì không?

+0

Bạn có thể có một số may mắn với câu hỏi này: http://stackoverflow.com/questions/406833/language-in-a-sandbox- trong đường ray – Earlz

Trả lời

Các vấn đề liên quan