调试 ruby 个网络应用程序

Debugging ruby web apps

我正在尝试弄清楚如何在 ruby 中调试线程 Web 应用程序。

下面的要点包含一个非常简化和琐碎的应用程序,它反映了我在项目应用程序中遇到的问题。我 运行 使用工头启动应用程序,然后我尝试使用 myapp.rb 中的 byebug 语句对其进行调试。当我在浏览器中转到根目录 url 时,它达到了断点,但在控制台中没有向我提供控制权,我根本无法做任何事情。它只显示断点,但我无法在控制台中输入任何内容,因此我无法导航到其他断点等...

我做错了什么?

**Procfile**

web:      bundle exec puma -C ./config/puma.rb

**config.ru**

require_relative 'myapp'
run Sinatra::Application

**myapp.rb** 

require 'sinatra'
require 'byebug'

get '/' do
  message="oh, hello!"
  byebug
  message
end

**puma.rb**

workers 2
threads_count = 5
threads threads_count, threads_count

这可能是由于 ruby 缓冲了您的网络服务器的输出。这在 Foreman wiki“Missing Output”.

上有更多描述

我认为有两种方法。您可以在断点之前停止缓冲:

$stdout.sync = true
byebug

这对我来说没问题,然后您可以在工头控制台中进行调试。

另一种方法是查看远程调试,您可以在其中使用可以从另一个进程连接到的调试服务器。在“How to use Byebug with a remote process (e.g., pow)”中已经有一个很好的答案。