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

时间:2015-06-22 22:02:32

标签: ruby node.js gem jekyll electron

AIM:使用Electron(Atom Shell)创建一个桌面应用程序(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
});

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

我的理想情景是"作为用户,我想按下编译网站的按钮" - >单击然后运行可能由该代码处理的gem的构建命令。

1 个答案:

答案 0 :(得分:1)

这是一个人为的例子,使用“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的命令。