首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Byebug与Sidekiq和Foreman

如何使用Byebug与Sidekiq和Foreman
EN

Stack Overflow用户
提问于 2016-01-05 17:05:06
回答 1查看 4.8K关注 0票数 16

我有一个rails应用程序,在这个应用程序中,我使用foreman启动我的rails和sidekiq服务器。由于foreman不能很好地与普通的byebug交互(键入时看不到提示),所以我已经为rails和侧翼服务器设置了远程调试。这对于rails服务器非常有效,但是当我连接到侧翼服务器的byebug服务器时,我得到以下信息:

代码语言:javascript
复制
$ 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:

代码语言:javascript
复制
sidekiq: bundle exec sidekiq
rails: rails server

config/initializers/byebug.rb:

代码语言:javascript
复制
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一起使用(尽管在foreman中,我无法在输入时看到提示)。

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

EN

回答 1

Stack Overflow用户

发布于 2016-12-23 10:04:31

我尝试在本地复制这一功能,并且使用sidekiq 3.3.1和byebug 9.0.5,只要稍微调整一下需求就可以了:

代码语言:javascript
复制
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}"

作业:

代码语言:javascript
复制
class TestJob
  include Sidekiq::Worker

  def perform
    byebug
  end
end
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34617269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档