在两个 Ruby 脚本之间交换消息

Exchanging messages between two Ruby scripts

我有两个 Ruby 脚本:loop.rbevent.rb。当我 运行 event.rb while 运行 在 loop.rb 中循环时,前者必须捕获后者并改变其行为。

我可以使用很多技巧;例如,loop.rb 监视一些环境变量,而 event.rb 改变它。但是我觉得有点脏。

从一个 Ruby 脚本向 Linux 中的另一个脚本发送消息的正确方法是什么?

我认为最好的选择是使用 ZeroMQ:

https://github.com/zeromq/rbzmq

require "zmq"

context = ZMQ::Context.new(1)

puts "Opening connection for READ"
inbound = context.socket(ZMQ::UPSTREAM)
inbound.bind("tcp://127.0.0.1:9000")

outbound = context.socket(ZMQ::DOWNSTREAM)
outbound.connect("tcp://127.0.0.1:9000")
p outbound.send("Hello World!")
p outbound.send("QUIT")

loop do
  data = inbound.recv
  p data
  break if data == "QUIT"
end