ruby - 从 Node.js 生成 Ruby - 如何在 Ruby 文件中进行 require?

标签 ruby node.js spawn

我已成功从我的 Node 应用程序生成一个 ruby​​ 脚本。然而,在我的 Ruby 脚本中,我想请求一些 gem 和文件,并且似乎在执行请求时,node.js 没有得到任何响应。

这是这样的:

var cp = require('child_process')
var ruby_child = cp.spawn('ruby',['libs/scorer/test.rb']);  

var result = '';
ruby_child.stdout.on('data', function(data) {
        result += data.toString();
});

ruby_child.on('close', function() {
        console.log(result);
});

我的 Ruby 脚本如下所示:

require 'utils' # if I remove this line, I can get the response.

# Does it have an argument?
if ARGV.nil? || ARGV.empty?
  p 'test'
  exit
end

最佳答案

这可能是 require 行失败了。 Ruby 程序向 STDERR 发送了一些错误状态,然后退出,并且您的 js 程序没有捕获 STDERR 输出。

在 js 程序中添加一些 STDERR 捕获代码,以获取问题的诊断信息。您可能会发现 Ruby 在 $LOAD_PATH 中找不到所需的库。

ruby_child.stderr.on('data', function(data) {
    console.log("ERROR --- " + data);
});

关于ruby - 从 Node.js 生成 Ruby - 如何在 Ruby 文件中进行 require?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24472450/

相关文章:

ruby - 如何在没有默认凭据文件的情况下授权 Google 服务帐户?

node.js - ECMAScript 2015 (ES6) 在 Node JS 上不带标志

mysql - 从 NodeJS AWS Lambda 函数查询 MySQL 数据库

node.js - Electron - 如何在 Electron 应用程序中使用 ffmpeg

javascript - 使用node js关闭.exe文件

asynchronous - 对 tokio::spawn(async move) 中的变量生命周期感到困惑

没有 'to_s' 的 Ruby 对象

ruby-on-rails - 通过子属性 Ruby on Rails 选择和排序父记录

javascript - Ruby on Rails、ActionCable、消息不显示

python - 我无法在全局范围内从 process.stdout.on 获取数据