Come determinare il valore di una variabile del controller durante l'esecuzione in Ruby on Rails?

StackOverflow https://stackoverflow.com/questions/60720

Domanda

Qual è il modo migliore per determinare il valore di una variabile del controller durante l'esecuzione?

Ad esempio, esiste un modo per inserire un'interruzione nel codice e far sì che il valore della variabile venga visualizzato sullo schermo (o nel registro)?

È stato utile?

Soluzione

SÌ.Il modo più semplice è aumentare il valore come stringa.Così: raise @foo.to_s

In alternativa, puoi installare il debugger (gem install ruby-debug), quindi avviare il server di sviluppo con il file --debugger bandiera.Quindi, nel tuo codice, chiama the debugger istruzione.

All'interno del prompt del debugger sono presenti molti comandi, inclusi p per stampare il valore di una variabile.

Aggiornamento: ecco qualcosa in più sul debug di Ruby.

Altri suggerimenti

Se hai una variabile di istanza del controller denominata @foo, quindi nel tuo controller puoi semplicemente fare qualcosa come:

logger.debug "@foo is: #{@foo}"

Inoltre, puoi generare il valore nel modello di visualizzazione utilizzando:

<%= debug @foo %>

Preferisco utilizzare il metodo di ispezione in questo modo:

raise @foo.inspect

Ha più informazioni di to_s, come i valori degli attributi.

Riepilogo di Jordi Bunster, John Topley e Jaryl:

IO.Modo rapido e sporco:

raise @foo.inspect

nel tuo controller.O

<% raise @foo.inspect %>

a tuo avviso.

II.Registrazione corretta per te development.log:

logger.debug "@foo == #{@foo.inspect}"

III. Debug completo:

Installa il debugger (gem install ruby-debug), quindi avviare il server di sviluppo con il file --debugger bandiera.Quindi, nel tuo codice, chiama the debugger istruzione.

All'interno del prompt del debugger sono presenti molti comandi, inclusi p per stampare il valore di una variabile.

Sollevare un'eccezione è il modo più veloce se hai solo bisogno di guardare un valore, ma vale la pena dedicare del tempo a imparare come utilizzare correttamente il debugger.È raro che tu abbia bisogno solo di vedere il valore di una variabile, probabilmente stai cercando di trovare un bug nel tuo codice, ed è a questo che serve un debugger.

L'invio delle informazioni al registro di sviluppo è più lento rispetto a una delle altre due opzioni qui finora se impari a utilizzare il debugger (chi vuole leggere i file di registro).Usa il logger per la produzione, vorrai vedere qual era il valore quando qualcuno ti chiama e dice che è tutto rotto.

Bene, di solito preferisco l'output dell'errore standard

$stderr.print("qualunque cosa")

È semplice e fa il suo lavoro.

  1. Aggiungere fare leva a Gemfile: gem 'pry-moves'
  2. Inserire binding.pry dove vuoi fermarti
  3. Digita il nome della variabile per visualizzarne il valore

Quindi continuare digitando c, passa alla riga successiva con n oppure esegui altre azioni di debug finché non risolvi il problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top