Category :

Published on :Aug 14, 2018

Are you looking to debug your sidekiq worker?

There is this gem called pry-remote which stops all processes from running. And lets you debug just like with pry.

You will have to put binding.remote_pry in your code and you've got a stopping point.

Installation

gem install pry-remote

Usage

Here's a program starting pry-remote:

  require 'pry-remote'

  class Foo
    def initialize(x, y)
      binding.remote_pry
    end
  end

  Foo.new 10, 20

Running it will prompt you with a message telling you Pry is waiting for a program to connect itself to it:

  [pry-remote] Waiting for client on drb://localhost:9876

You can then connect yourself using pry-remote:

  $ pry-remote
  From: example.rb @ line 7 in Foo#initialize:
        2:
        3: require 'pry-remote'
        4:
        5: class Foo
        6:   def initialize(x, y)
    =>  7:     binding.remote_pry
        8:   end
        9: end
      10:
      11: Foo.new 10, 20
  pry(#<Foo:0x00000000d9b5e8>):1> self
  => #<Foo:0x1efb3b0>
  pry(#<Foo:0x00000001efb3b0>):2> ls -l
  Local variables: [
    [0] :_,
    [1] :_dir_,
    [2] :_file_,
    [3] :_ex_,
    [4] :_pry_,
    [5] :_out_,
    [6] :_in_,
    [7] :x,
    [8] :y
  ]
  pry(#<Foo:0x00000001efb3b0>):3>

Alternative method:

You can also use pry in your code and call your your worker from rails console.

MyWorker.new.perform(some_args)

Did this work for you? Feel free to share in the comments below.

Happy Coding!

Reference: https://stackoverflow.com/a/43738392/4096120

Loading

Interested In Working Together ?

Over 8 years of industry experience in Game/Frontend
development with special interest.
Book your Consultation
© Prakash Poudel