我需要从 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)
});
但它不起作用。有任何想法吗?
我需要从 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
运行它会生成一个 ruby 存根,~/.rvm/bin
或者,如果您已经安装了 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)
});