在两个 Ruby 脚本之间交换消息
Exchanging messages between two Ruby scripts
我有两个 Ruby 脚本:loop.rb
和 event.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
我有两个 Ruby 脚本:loop.rb
和 event.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