Cómo determinar el valor de un controlador variable durante la ejecución en Ruby on Rails?
-
09-06-2019 - |
Pregunta
¿Cuál es la mejor manera para mí para determinar un controlador el valor de la variable durante la ejecución?
Por ejemplo, hay una manera que puedo insertar una pausa en el código, y hacer que el valor de la variable a ser la salida a la pantalla (o en el registro)?
Solución
Sí.La forma más fácil es aumentar el valor como una cadena.Así: raise @foo.to_s
O, usted puede instalar el depurador (gem install ruby-debug
) y, a continuación, inicie el servidor de desarrollo con el --debugger
de la bandera.Luego, en el código, llame a la debugger
de la instrucción.
En el interior del símbolo de depurador, tiene muchos comandos, incluyendo p
para imprimir el valor de una variable.
Actualización: aquí un poco más sobre ruby-debug.
Otros consejos
Si usted tiene un control variable de instancia con nombre @foo
, a continuación, en el controlador, usted puede simplemente hacer algo como:
logger.debug "@foo is: #{@foo}"
Además, se puede extraer el valor de su plantilla de vista el uso de:
<%= debug @foo %>
Yo prefiero usar la de inspeccionar método así:
raise @foo.inspect
Tiene más información que la que to_s, como los valores de atributo.
Resumen de Jordi Bunster, Juan Topley, y Jaryl:
I.De forma rápida y sucia:
raise @foo.inspect
en tu controlador.O
<% raise @foo.inspect %>
en su vista.
II.Adecuado registro para usted development.log
:
logger.debug "@foo == #{@foo.inspect}"
III. De pleno derecho de la depuración:
Instalar el depurador (gem install ruby-debug
) y, a continuación, inicie el servidor de desarrollo con el --debugger
de la bandera.Luego, en el código, llame a la debugger
de la instrucción.
En el interior del símbolo de depurador, tiene muchos comandos, incluyendo p
para imprimir el valor de una variable.
Elevar una excepción es la manera más rápida si usted sólo tiene que mirar en un valor, pero vale la pena el tiempo para aprender cómo usar el depurador correctamente.Es raro que sólo tendría que ver el valor de una variable, es probable que esté tratando de encontrar un error en su código, y eso es lo que un depurador es para.
El envío de la información para el registro de desarrollo es más lento que el de las otras dos opciones aquí, tan lejos si usted aprende cómo utilizar el depurador (quien quiera leer a través de los archivos de registro).Utilizar el registrador de la producción, usted va a querer para ver cuál era el valor cuando alguien te llama y dice que todo está roto.
Bueno, yo por lo general prefieren la salida de error estándar
$stderr.imprimir("lo")
Su simple y hace el trabajo.
- Agregar de palanca se mueve a Gemfile:
gem 'pry-moves'
- Insertar
binding.pry
donde usted desea dejar de - El tipo de la variable nombre para ver su valor
A continuación, seguir escribiendo c
, mover a la siguiente línea con n
o realizar otras acciones de depuración hasta que se resuelva el problema.