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

使用child_process.exec从NodeJS调用Ruby时如何设置Ruby版本,ruby,node.js,child-process,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) }); 但它不起作用。有什么想法吗?在执行ruby之前切换gemset/ruby版本的另一种方法是生成一个RVM包装器来

我需要在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使用的是2.0.0;ruby-v
output?它输出ruby 1.8.7(2012-02-08 patchlevel 358)[universal-darwin12.0]当您在终端中运行时,还是在使用exec时,当您使用
exec()
。终端工作正常。尝试确定要执行的Ruby版本的安装路径,然后从该路径调用Ruby解释器。但不建议您在同一操作系统中运行不同版本的解释器,最新安装的解释器当然可能会覆盖上一个版本的配置好的,我试试这个。它需要在heroku上运行,我还需要手动运行bundle,所以不确定这是否能正常工作。但这给了我更多的工作机会。谢谢是的,不会的。当通过exec()执行时,它也不能在我的本地计算机上运行
child_process.exec("~/.rvm/bin/<prefix>_ruby file.rb", {cwd: 'directory_name'}, function(err, stdout){
  console.log(stdout)
});