【问题标题】:Run/Install ruby gem from io.js with child_process使用 child_process 从 io.js 运行/安装 ruby​​ gem
【发布时间】:2015-09-08 12:47:17
【问题描述】:

目标:使用 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 的构建命令,该命令可能会由该代码处理。

【问题讨论】:

    标签: ruby node.js gem jekyll electron


    【解决方案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);
    }
    

    这个想法是使用 which 来检查是否安装了 gem,然后安装依赖项。然后,您可以使用 exec 通过该 gem 运行命令。

    【讨论】:

    • 可能不会。也许使用允许您创建桌面应用程序的 Ruby 框架可能是一个更好的主意。
    • 嗯好吧,这可能是在没有 Ruby 堆栈的情况下使用 gem 的唯一方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多