带有node.js的Ruby子进程
我正在尝试将ruby实例作为我的节点程序的子进程启动。 事实上,一切都很好,但我无法与ruby的STDIN和STDOUT交互。 (当然ruby程序在我的终端上使用我的键盘输入)
所以这是一个我想要工作的简化代码……
simpleproc.js
var util = require('util'), spawn = require('child_process').spawn, ruby = spawn('ruby', [__dirname + '/process.rb']); ruby.stdout.on('data', function (data) { console.log('stdout: ' + data); }); ruby.stderr.on('data', function (data) { console.log('stderr: ' + data); }); ruby.on('exit', function (code) { console.log('child process exited with code ' + code); }); ruby.stdin.write("ping\n");
process.rb
f = File.new("process.log", "w") f.write "=== Hello! ===\n" STDIN.each_line do |line| STDOUT.write line f.write line end
它出什么问题了 ? 我已经设法让另一个进程工作……但是在这里,没有IO! 什么都没发生 !
编辑:我修改了ruby文件,以显示,对于node,该文件只用=== Hello! ===\n
编写=== Hello! ===\n
=== Hello! ===\n
里面。 所以我们可以说,ruby文件正确启动但是没有从节点接收任何东西(我试图在STDOUT.write
之后STDOUT.write
但是do语句永远不会执行。
在STDOUT.write
之后在ruby端尝试STDOUT.flush
,因为输出正在缓冲。
- 音乐播放器选择一些歌曲并在rails中播放
- 我的.html.erb中的动态Javascript
- 如何使用AngularJS,Devise和UI路由器全局实现身份validation?
- 使用JavaScript为依赖项创建代码选择RESTful
- 如何使用重复图像预填充_form?
- Coffeescript / Javascript在服务器上不起作用
- therubyracer或nodejs,我应该使用哪个?
- 不兼容的字符编码:ASCII-8BIT和UTF-8,同时在rails中使用javascript
- javascript函数可通过javascript_include_tag获得,但不是资产管道和application.js