How to debug a rails (3.2) app started by foreman?

后端 未结 2 496
执笔经年
执笔经年 2020-12-14 03:01

I am trying to use foreman to start my rails app. Unfortunately I have difficulties connecting my IDE for debugging.

I read here about using

Debugge         


        
2条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-14 03:28

    If you use several workers with full rails environment you could use the following initializer:

    # Enabled debugger with foreman, see https://github.com/ddollar/foreman/issues/58
    if Rails.env.development?
      require 'debugger'
      Debugger.wait_connection = true
    
      def find_available_port
        server = TCPServer.new(nil, 0)
        server.addr[1]
      ensure
        server.close if server
      end
    
      port = find_available_port
      puts "Remote debugger on port #{port}"
      Debugger.start_remote(nil, port)
    end
    

    And in the foreman's logs you'll be able to find debugger's ports:

    $ foreman start
    12:48:42 web.1     | started with pid 29916
    12:48:42 worker.1  | started with pid 29921
    12:48:44 web.1     | I, [2012-10-30T12:48:44.810464 #29916]  INFO -- : listening on addr=0.0.0.0:5000 fd=10
    12:48:44 web.1     | I, [2012-10-30T12:48:44.810636 #29916]  INFO -- : Refreshing Gem list
    12:48:47 web.1     | Remote debugger on port 59269
    12:48:48 worker.1  | Remote debugger on port 41301
    

    Now run debugger using:

    rdebug -c -p [PORT]
    

提交回复
热议问题