tutorial rails mundo modelos introduccion hola español desde controlador cero ruby-on-rails debugging ruby-on-rails-3.2 foreman

ruby-on-rails - mundo - ruby on rails pdf español



¿Cómo depurar una aplicación de rails(3.2) iniciada por capataz? (2)

Si usa varios trabajadores con un entorno de rieles completos, podría usar el siguiente inicializador:

# 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

Y en los registros del capataz podrás encontrar los puertos del depurador:

$ 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

Ahora ejecuta el depurador usando:

rdebug -c -p [PORT]

Estoy tratando de usar el capataz para iniciar mi aplicación de rieles. Desafortunadamente tengo dificultades para conectar mi IDE para la depuración.

Leí here acerca de usar

Debugger.wait_connection = true Debugger.start_remote

para iniciar una sesión de depuración remota, pero eso realmente no funciona.

Pregunta: ¿Hay alguna forma de depurar una aplicación de rails (3.2) iniciada por un capataz? Si es así, ¿cuál es el enfoque?


Un enfoque es requerir el depurador normalmente en su archivo gem, y agregar el debugger normalmente en su código según sea necesario. Cuando el servidor llegue a esa línea, se detendrá, pero el capataz no será detallado al respecto. En la consola de su capataz, puede escribir ciegamente irb , y solo entonces verá aparecer un aviso. Bad UX, ¿verdad?

Otro enfoque (aumentativo) es seguir tus registros:

tail -f log/development.log

Espero que esto ayude.