我有一个rails应用程序,我试图允许用户以交互方式编写ruby代码,类似于rubymonk。计划是有一个textarea,他们可以写一个红宝石代码,一个按钮,将执行他们写的一切。我不能为我的生活弄清楚如何做到这一点。
首先我看的是RubyJS,但这似乎只允许你在javascript中定义ruby对象。它仍然需要你写JS。
蛋白石是另一个想法,但这似乎只是服务器端。
一种选择是将ruby代码字符串发送到服务器并使用--conf spark.executor.extraClassPath=<directory containing configuration file>
执行它,但这似乎是一个安全噩梦。
所以这一切都让我想到了最后的问题。有没有任何JS库需要用ruby编写的代码(作为字符串),并将其编译成JS并执行它?或者,如果我忽略了某些东西,是否有更简单的解决方案?
答案 0 :(得分:1)
自问这个问题已经有一段时间了,但是如果人们仍然感兴趣......
Opal是另一个想法,但这似乎只是服务器端。一种选择是将ruby代码字符串发送到服务器并使用eval执行它,但这似乎是一个安全噩梦。
你可以在客户端运行Opal就好了!
Add opal to your site and then use Opal.compile()
and Opal.eval()
to run ruby scripts.他们基本上做的是通过蛋白石解析器运行蛋白石解析器,导致解析器的JS版本。您可以通过从站点下载opal-parser.min.js来找到包含解析器的opal的预编译版本。这样您就可以访问for row in c:
print(row)
和.compile()
函数。
这是我可以来的最简单的完整在线ruby编译器。请注意,.eval()
会打印到控制台,因此如果要查看任何输出,请确保返回一个非零值作为最后一个语句。
puts
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Compile ruby from your browser</title>
</head>
<body>
<h1>Input</h1>
<textarea id="input" rows="5" cols="50">
puts "Hello, World!"
3 * 5
puts "blurb"
4**6
</textarea>
<button id="compile" onclick="compile()">Compile!</button>
<h1>Transpiled</h1>
<textarea id="transpiled" rows="5" cols="50"></textarea>
<h1>Output</h1>
<textarea id="output" rows="5" cols="50"></textarea>
<script src="js/opal.min.js"></script>
<script src="js/opal-parser.min.js"></script>
<script type="text/javascript">Opal.load('opal-parser')</script>
<script src="js/scripts.js"></script>
</body>
</html>
答案 1 :(得分:0)
如果您希望代码在客户端执行,则可以使用emscripten。这就是repl.it的作用。
如果您希望代码在服务器端执行,那么如果您不想处理安全性,可以使用Ideone API。
注意:Stack Overflow不允许我发布指向Ideone API的链接,因此这里是URL:http colon slash slash ideone.com slash api