我正在尝试编写一个可以在后台执行 mongodb 服务器的简单脚本。目前我使用Process.spawn
方法。它可以工作,但我必须等待一段时间mongod
才能完全运行(启动过程已完成,数据库正在等待新连接)。
def run!
return if running?
FileUtils.mkdir_p(MONGODB_DBPATH)
command = "mongod --port #{port} --dbpath #{MONGODB_DBPATH} --nojournal"
log_file = File.open(File.expand_path("log/test_mongod.log"), "w+")
@pid = Process.spawn(command, out: log_file)
# TODO wait for the connection (waiting for connections on port xxxx)
sleep 2
yield port if block_given?
end
这是完整的脚本: https ://github.com/lucassus/mongo_browser/blob/master/spec/support/mongod.rb#L22
sleep 2
是否有可能从这段代码中删除这个丑陋的任意?
我的第一个猜测是将管道连接到生成的进程并等待“等待端口 xxxx 上的连接”消息写入管道。但我不知道如何实现它。