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

我需要从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) }); 

但它不起作用。 有任何想法吗?

在执行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) });