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

标签 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 包装器。

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​​ stub ,或者,如果您已在系统范围内安装了 RVM,则会在 /usr/local/rvm/bin 中生成一个 ruby​​ stub 。该 stub 在执行时会自动切换到指定的 ruby​​-version/gemset。

您的 Node 脚本可能如下所示:

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

关于ruby - 使用 child_process.exec 从 NodeJS 调用 Ruby 时如何设置 Ruby 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18797299/

相关文章:

ruby - 安装 ruby​​gems 时遇到问题

node.js - Sequelize decimal data save 2个小数点

javascript - Node Js如何在阻塞进程的情况下处理多个并行请求

mysql - 根据搜索值从表排序中检索数据??/

python - 通过 child_process 从 Python 向 Node 发送 JSON 如果太长会被截断,如何修复?

ruby-on-rails - Prawn pdf附件在邮件中

ruby - 检查数组中求和的数字是否与输入参数匹配

javascript - 如何根据类别附加正确的详细信息?

node.js - 在 Node 中执行子进程来控制控制台

node.js - nodejs,启动可执行文件并退出 Node 进程