2013-05-27 73 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

相關問題