Rails プロジェクトにプラグイン アーキテクチャを実装しています。プラグイン アーキテクチャには、プラグイン作成者が Ruby コードを記述してサーバー上で実行する機能が含まれています。プラグイン作成者が破壊的なコードを記述できないように、これを安全にしたいと考えています。
他のオプションも受け入れますが、私がしなければならないことは、スコープが限定された隔離された環境でプラグインの Ruby コードを実行することだと思います。therubyracer gemの精神で何かを考えていますが、JavaScript の代わりに Ruby を安全に実行したいと考えています。
これを行う良い方法がわかりません。eval
限定対象で使おうと思っbindings
たのですが、複数ファイルにするのは難しいとeval
思いますし、束縛を十分に限定できないと思います。たとえば、プラグインがdestroy_all
モデルに対して何かを実行できるようにしたり、アプリ内の既存のコードにモンキー パッチを適用したりしたくありません。
私はこれにかなり困惑しています。誰にもアイデアはありますか?