Mac上IRB中的并行进程出现问题



我正在通过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中测试)。

最新更新