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

时间:2015-11-17 15:16:17

标签: ruby linux event-handling

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

我可以使用很多黑客;例如,loop.rb会监视某些env-var,而event.rb会更改它。但我觉得它有点脏。

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

1 个答案:

答案 0 :(得分:4)

我认为最好的选择是使用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