3

我正在创建一个 Ruby On Rails 网站,一方面它需要是动态的,以便(排序)受信任的用户可以使网站的某些部分以不同的方式工作。为此,我需要一种脚本语言。在 ASP.Net 中的一个类似项目中,我编写了自己的脚本语言/DSL。我不能使用那个源代码(在工作中编写),如果我不需要的话,我不想制作另一种脚本语言。

那么,我有哪些选择?脚本必须被锁定并且不能使我的服务器或任何东西崩溃。如果我可以使用 Ruby 作为脚本语言,我真的很高兴,但这并不是绝对必要的。此外,几乎每个网站请求都会调用此脚本部分,有时不止一次。所以,速度是一个因素。

我查看了 RubyLuaBridge,但它是 Alpha 状态,似乎已经死了。

在 Ruby 项目中我有哪些脚本语言选择?

此外,我将完全控制该项目的部署位置(root 访问权限),因此没有真正的限制..

4

3 回答 3

1

JRuby 呢?您可以使用许多脚本语言的 java 实现,例如 javascript、scheme 等

于 2010-04-04T20:59:23.740 回答
1

还有Rufus-lua虽然它的版本是 0.1.0...

于 2010-04-04T21:17:08.970 回答
1

好吧,由于尚未建议,因此Pickaxe 书中描述了Locking Ruby In The Safe 。这使您可以使用 Ruby 作为语言而不会显着减慢 AFAIK。

该技术旨在允许对不受信任的 Ruby 代码进行安全沙箱化,并且错误修复和讨论旨在保持这种方式,但无限循环和其他一些东西仍然允许恶意用户锁定 CPU。(例如这个讨论也许。)

我不知道的是如何从安全线程外部返回本质上可以安全使用的数据。单例对象(例如)可以模仿任何类,然后在返回线程中调用任何方法时做一些危险的事情。我仍然在谷歌上搜索它。(Ruby 编程语言说第 4 级“阻止元编程方法”,这将允许您安全地验证返回对象的类,我想这将使结果可以安全使用。)

除此之外,实现具有动态范围的 Lisp-1 可能并不难 (*snrk*),因为您已经有了垃圾收集器。

于 2010-04-04T22:09:52.127 回答