Tag:

在处理完输入后,如何在不退出的情况下将STDin传递给IRB?

我正在使用一个简短的bash脚本来帮助我测试ruby中的链表的实现。 我知道rspec和unit testing,我确信它们是我正在尝试做的更好的选择,但我能够找出这个命令 echo “require ‘./nodes'” | irb 之后的输出是 Switch to inspect mode. require ‘./nodes’ true 从技术上讲,这是成功的,但是irb流程在那里结束。 所以我试过了 echo “require ‘./nodes'” | irb –noinspect 哪个给了我 Switch to non inspect mode. require ‘./nodes’ true 它再次退出irb过程。 我只是想让我的工作流程更方便一些,因为我喜欢使用irb来测试我的文件,看看它们发生了什么。

Ruby管道:如何将两个子进程的输出绑定在一起?

是否有自动方式在Ruby中进行shell管道? 我正在尝试将以下shell代码转换为Ruby: a | b | c… > … 但到目前为止我找到的唯一解决方案是自己进行缓冲管理(简化,未经测试,希望它能得到我的意思): a = IO.popen(‘a’) b = IO.popen(‘b’, ‘w+’) Thread.new(a, b) { |in, out| out.write(in.readpartial(4096)) until in.eof? out.close_write } # deal with b.read… 我想我想要的是告诉popen使用现有流而不是创建新流的方法? 或者,使用IO#merge方法将输出连接到b的输入? 当filter的数量增加时,我当前的方法变得相当笨拙。 我明白知道Kernel#system(‘a | b’) ,但我需要以通用的方式将Rubyfilter与外部程序filter混合在一起。