加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何使用Byebug与Sidekiq和工头

发布时间:2020-12-16 19:55:43 所属栏目:百科 来源:网络整理
导读:我有一个rails应用程序,我使用工头来启动我的rails和sidekiq服务器.由于工头与常规的拜占庭不能很好的交互(因为您键入时看不到提示),我已经为rails和sidekiq服务器设置了远程调试.这对于rails服务器来说非常适用,但是当我连接到sidekiq服务器的byebug服务器
我有一个rails应用程序,我使用工头来启动我的rails和sidekiq服务器.由于工头与常规的拜占庭不能很好的交互(因为您键入时看不到提示),我已经为rails和sidekiq服务器设置了远程调试.这对于rails服务器来说非常适用,但是当我连接到sidekiq服务器的byebug服务器时,我得到以下内容:
$bundle exec byebug -R localhost:58501
Connecting to byebug server localhost:58501...
Connected.
(byebug:ctrl)

我无法捕捉任何byebug断点.

根据文档,(byebug:ctrl)提示意味着程序正常终止(https://github.com/deivid-rodriguez/byebug/blob/master/GUIDE.md),但sidekiq正在运行作业.

在我的配置中有什么不正确,还是sidekiq只是不兼容byebug的远程调试?

Procfile:

sidekiq: bundle exec sidekiq
rails: rails server

配置/初始化/ byebug.rb:

if Rails.env.development?
  require 'byebug'

  def find_available_port
    server = TCPServer.new(nil,0)
    server.addr[1]
  ensure
    server.close if server
  end

  port = find_available_port

  puts "Starting remote debugger..."
  Byebug.start_server 'localhost',port
  puts "Remote debugger on port #{port}"
end

请注意,当我不使用远程调试时,byebug功能很好用sidekiq(虽然在工头我看不到我键入的提示).

另请注意,我尝试在Byebug.start_server之前使用Byebug.wait_connection = true,但我有同样的问题.

解决方法

我已经尝试在本地复制,并使用sidekiq 3.3.1和byebug 9.0.5,似乎可以正常工作,对要求进行了微调:
require 'byebug/core'

def find_available_port
  server = TCPServer.new(nil,0)
  server.addr[1]
ensure
  server.close if server
end

port = find_available_port

puts "Starting remote debugger..."
Byebug.start_server 'localhost',port
puts "Remote debugger on port #{port}"

工作:

class TestJob
  include Sidekiq::Worker

  def perform
    byebug
  end
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读