我正在潜入NodeJS,在Heroku上构建一个应用程序,以帮助我的学生了解几种不同编程语言的各个方面。目前,该应用程序可以使用the VM module'srunInNewContext
方法安全评估Javascript。我想添加对Ruby或Python的支持。如何在NodeJS应用程序的服务器端评估Ruby?
是否可以在NodeJS应用程序的服务器端安全地评估以其他语言(特别是Ruby或Python)编写的代码?
在此先感谢您的智慧!
我正在潜入NodeJS,在Heroku上构建一个应用程序,以帮助我的学生了解几种不同编程语言的各个方面。目前,该应用程序可以使用the VM module'srunInNewContext
方法安全评估Javascript。我想添加对Ruby或Python的支持。如何在NodeJS应用程序的服务器端评估Ruby?
是否可以在NodeJS应用程序的服务器端安全地评估以其他语言(特别是Ruby或Python)编写的代码?
在此先感谢您的智慧!
我前几天玩的是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也是。会非常感兴趣的听到这是如何工作的!
您只需要在Heroku上运行multi-buildback,然后在child_process.spawn或exec上运行Ruby或Python代码。当然,如果可能的话,你会希望这样做是异步的。
我刚刚阅读了buildpack,之前我从来没有用过它们,但是它听起来像只在应用程序启动时才使用,是对的吗?如果我想在应用程序启动后在运行时评估ruby或python代码,构建包仍然有用吗? – BeachRunnerFred
buildpack指定每个虚拟机上安装的所有软件包(Heroku称之为dyno),而不仅仅是在启动时。你需要使用Ruby和Python,而不是缺省,这就是你只有Node的地方。 – dankohn
优秀,这是有道理的,非常感谢! – BeachRunnerFred
谢谢,尼克,我会给它一个镜头,让你知道它是如何工作的,但这有很大的帮助! – BeachRunnerFred