小编Ers*_*nci的帖子

Puma 和 byebug/pry 在并发请求期间导致终端损坏

更新:看起来这是 Byebug 的一个长期存在的问题:https://github.com/deivid-rodriguez/byebug/issues/487

当我使用 Puma 在集群模式下运行多个工作线程的 Rails 应用程序时,该应用程序正在处理并发请求,byebugpry在终端上导致奇怪的行为。例如,我将尝试在断点处输入quit,但它会不确定地显示为qituiqt等。我必须多次键入每个字符(例如,quit),直到获得所需的结果命令。

然而,即使我设法输入正确的命令,它仍然抱怨按 Enter 键后不存在qitui等,即使正确的命令名义上在屏幕上。如果我第二次按 Enter 键,即使提示中不再有任何命令等待,它也会运行正确的命令(因为我已经第一次按 Enter 键了)。即使如此,我也只能让它执行一次命令;之后,断点根本不起作用,我必须重新启动服务器。

在开发中以单一模式使用 Puma 时,我从未遇到过这个问题,但在我的用例中,我必须在开发中使用多个工作人员。我在一个单独的 Node 进程中运行 SSR,该进程在 SSR 期间向 Rails 服务器发出请求。在单模式下,只有一个进程,SSR 请求超时,因为 Puma 仍在等待浏览器请求,但浏览器请求要等到 SSR 完成后才能完成。对于多个工作进程,一个进程处理浏览器请求,而另一个进程处理 SSR 请求。

有谁知道为什么会发生这种情况?byebug请注意,在处理并发请求时,我在使用pryUnicorn 和 Passenger 时也遇到了类似的问题。似乎是比任何一个图书馆都更深层次的问题。

ruby ruby-on-rails pry puma byebug

5
推荐指数
0
解决办法
500
查看次数

标签 统计

byebug ×1

pry ×1

puma ×1

ruby ×1

ruby-on-rails ×1