我正在通过IRB处理数据库,我想定期更改数据库(例如,每10秒),以显示STDOUT中的日志。
此外,我希望手动控制能够更改数据库并停止第一个进程。
到目前为止,我提出了以下
def start
stop
@running = Thread.new do
loop do
fork do
puts 'change the database'
end
sleep 10
end
end
nil
end
def stop
@running.kill if @running
end
然而,除非我在主IRB线程中输入一些内容,否则这并不是每10秒运行一次。
如何使其工作?
OSX上的某些版本的readline正在阻塞。如果一个人经历了你描述的行为,他们可以通过放置来禁用readline
IRB.conf[:USE_READLINE] = false
in.irbrc
对我来说很好(用ruby 1.9.2-p180和1.8.7-p334在irb中测试)。