调试 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)”中已经有一个很好的答案。
我正在尝试弄清楚如何在 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)”中已经有一个很好的答案。