2013-05-27 40 views
3

我正在潜入NodeJS,在Heroku上构建一个应用程序,以帮助我的学生了解几种不同编程语言的各个方面。目前,该应用程序可以使用the VM module'srunInNewContext方法安全评估Javascript。我想添加对Ruby或Python的支持。如何在NodeJS应用程序的服务器端评估Ruby?

是否可以在NodeJS应用程序的服务器端安全地评估以其他语言(特别是Ruby或Python)编写的代码?

在此先感谢您的智慧!

回答

2

我前几天玩的是nodejs vm,它非常酷......据我所知,还没有任何东西会被写入,这对于Ruby来说是一样的。您可以使用node.js中的child process函数通过命令行运行ruby:child_process.exec(command, [options], callback)。不知道有多少使用,这将是你,但万一这里是:

var childProcess = require("child_process").exec; 

childProcess('ruby -e "puts \'Hello World!\'"', function (err, stdout, stderr) { 
    console.log(stdout); 
}); 

我还没有尝试过在Heroku但本地工作,我不明白为什么它不会与工作python也是。会非常感兴趣的听到这是如何工作的!

+0

谢谢,尼克,我会给它一个镜头,让你知道它是如何工作的,但这有很大的帮助! – BeachRunnerFred

1

您只需要在Heroku上运行multi-buildback,然后在child_process.spawn或exec上运行Ruby或Python代码。当然,如果可能的话,你会希望这样做是异步的。

+0

我刚刚阅读了buildpack,之前我从来没有用过它们,但是它听起来像只在应用程序启动时才使用,是对的吗?如果我想在应用程序启动后在运行时评估ruby或python代码,构建包仍然有用吗? – BeachRunnerFred

+0

buildpack指定每个虚拟机上安装的所有软件包(Heroku称之为dyno),而不仅仅是在启动时。你需要使用Ruby和Python,而不是缺省,这就是你只有Node的地方。 – dankohn

+0

优秀,这是有道理的,非常感谢! – BeachRunnerFred

相关问题