如何使用child_process.exec从NodeJS调用Ruby时设置Ruby版本

时间:2013-09-14 01:07:01

标签: ruby node.js child-process

我需要在node.js应用程序中运行ruby脚本。该脚本需要Ruby 2.0,但是当我尝试运行脚本时,它会继续运行1.8并且失败。我试过了

child_process.exec("rvm use 2.0.0;ruby file.rb", {cwd: 'directory_name'}, function(err, stdout){
  console.log(stdout)
});

但它不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

在执行ruby之前切换gemset / ruby​​版本的另一种方法是生成一个RVM包装器,为你完成这项工作。

rvm use 2.0.0
rvm wrapper 2.0.0@<gemset> <prefix> # gesmset and prefix are optional but I'd use them for clarification

运行它会在~/.rvm/bin中生成ruby存根,或者如果您已在系统范围内安装RVM,则会在/usr/local/rvm/bin中生成。执行时,此存根自动切换到指定的ruby-version / gemset。

您的节点脚本可能如下所示:

child_process.exec("~/.rvm/bin/<prefix>_ruby file.rb", {cwd: 'directory_name'}, function(err, stdout){
  console.log(stdout)
});