使用child_process从io.js运行/安装ruby gem

目的:用Electron(Atom Shell)创build一个桌面应用程序(GUI),它从io.js运行一个gem的命令。

1.问题是我想知道哪个是处理调用系统中gem命令的最好方法。

2.如果系统内没有安装gem,桌面应用程序将毫无价值。 哪个是处理这种依赖的最好方法?

示例代码,我已经排出

var spawn = require("child_process").spawn; var jk = spawn('jekyll', ['serve']); jk.stdout.on('data', function(data){ console.log(data.toString('utf8')); // WRITE IN THE CONSOLE GEM OUTPUT }); 

该代码是执行命令的好方法吗?

我的理想场景是“作为用户我要按下一个编译站点的button” – >单击然后运行将由该代码处理的gem的构build命令。

下面是一个使用“ShellJS”和jekyll作为依赖的人为的例子:

 var shell = require('shelljs'); if (shell.which('gem')) { if (shell.exec("gem install jekyll").code === 0) { shell.exec("jekyll new my-site"); //Do more stuff shell.exec("jekyll build"); } } else { echo('Sorry, this program requires gem. Install from Source'); exit(1); } 

这个想法是用来检查是否安装了gem,然后安装依赖项。 然后你可以使用exec来运行那个gem的命令。