3

私は Ruby On Rails Web サイトを作成していますが、(ある程度) 信頼できるユーザーが Web サイトの一部を異なる方法で動作させることができるように、一部を動的にする必要があります。このためには、スクリプト言語が必要です。ASP.Net の同様のプロジェクトで、私は独自のスクリプト言語/DSL を作成しました。私はそのソース コード (仕事で書かれたもの) を使用することはできません。また、必要がなければ、別のスクリプト言語を作成したくありません。

それで、私にはどのような選択肢がありますか?スクリプトはロックダウンされている必要があり、サーバーなどをクラッシュさせることはできません。スクリプト言語として Ruby を使用できればよいのですが、厳密には必須ではありません。また、このスクリプト部分は、Web サイトに対するほぼすべての要求で、場合によっては複数回呼び出されます。したがって、速度は重要な要素です。

RubyLuaBridge を見てみましたが、アルファ ステータスであり、死んでいるようです。

Ruby プロジェクトのスクリプト言語にはどのような選択肢がありますか?

また、このプロジェクトが展開される場所 (ルート アクセス) を完全に制御できるため、実際の制限はありません..

4

3 に答える 3

1

JRubyはどうですか?javascript、schemeなどの多くのスクリプト言語のJava実装を使用できます

于 2010-04-04T20:59:23.740 に答える
1

バージョン0.1.0ですが、Rufus-luaもあります...

于 2010-04-04T21:17:08.970 に答える
1

まあ、まだ提案されていないので、Pickaxe の本で説明されているように、Locking Ruby In The Safeがあります。これにより、大幅な速度低下なしにRubyを言語として使用できます。

この手法は、信頼されていない Ruby コードの安全なサンドボックス化を可能にすることを目的としており、バグ修正と議論はそれを維持することを目的としていますが、無限ループやその他のいくつかの要因により、依然として悪意のあるユーザーが CPU を固定することができます。(例えば、この議論は多分。)

私が知らないのは、安全なスレッドの外部から使用しても本質的に安全なデータを返す方法です。シングルトン オブジェクト (たとえば) は、任意のクラスを模倣し、返されたスレッドでメソッドが呼び出されたときに危険なことを行うことができます。私はまだそれについてグーグルで調べています。(Rubyプログラミング言語は、レベル4の「メタプログラミングメソッドを防止する」と述べています。これにより、返されたオブジェクトのクラスを安全に検証できるため、結果を安全に使用できると思います。)

それがなければ、ガベージ コレクタがすでにあるので、動的スコープで Lisp-1 を実装するのは難しくないかもしれません (*snrk*)。

于 2010-04-04T22:09:52.127 に答える