我正在潛入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