2009-05-24 8 views

risposta

113

Il .inspect metodo di qualsiasi oggetto deve formato è correttamente per la visualizzazione, basta fare ..

<%= theobject.inspect %> 

Il metodo .methods può anche essere utile:

<%= theobject.methods.inspect %> 

Può aiutare a mettere che in <pre> tag, a seconda dei dati

+8

sì questo dovrebbe essere la risposta imho –

+0

questo ha lavorato molto per me in Sinatra. –

+1

solo un risparmio di tempo per chi cerca la formattazione più ordinata in console: 'puts theobject.inspect.gsub (", "," \ n ")' – Gus

63

In vista:

include DebugHelper 

...your code... 

debug(object) 

Nel controller, modelli e altro codice:

puts YAML::dump(object) 

Source

+0

di DebugHelper debug (oggetto) sollevare metodo non definito 'DebugHelper di :) –

+0

ho ottenuto che anche – tam5

3

Se si desidera solo i dati rilevanti da visualizzare sullo standard output (l'output del terminale se stai correndo dalla riga di comando), puoi usare p some_object.

8

In una vista è possibile utilizzare <%= debug(yourobject) %> che genererà una visualizzazione YAML dei dati. Se vuoi qualcosa nel tuo registro dovresti usare logger.debug yourobject.inspect.

6

È inoltre possibile utilizzare YAML :: discarica stenografia (y) sotto consolle Rails:

>> y User.first 
--- !ruby/object:User 
attributes: 
    created_at: 2009-05-24 20:16:11.099441 
    updated_at: 2009-05-26 22:46:29.501245 
    current_login_ip: 127.0.0.1 
    id: "1" 
    current_login_at: 2009-05-24 20:20:46.627254 
    login_count: "1" 
    last_login_ip: 
    last_login_at: 
    login: admin 
attributes_cache: {} 

=> nil 
>> 

Se si desidera visualizzare in anteprima solo alcuni contenuti della stringa, provare a utilizzare rilancio (per esempio in modelli, controller o qualche altro posto inaccessibile). Si ottiene il backtrace gratis :)

>> raise Rails.root 
RuntimeError: /home/marcin/work/github/project1 
    from (irb):17 
>> 

ho anche davvero vi incoraggio a provare ruby-debug:

E ' incredibilmente helpf ul!

0

Io uso questo :)

require 'yaml' 

module AppHelpers 
    module Debug 
    module VarDump 

     class << self 

     def dump(dump_object, file_path) 
      File.open file_path, "a+" do |log_file| 
      current_date = Time.new.to_s + "\n" + YAML::dump(dump_object) + "\n" 
      log_file.puts current_date 
      log_file.close 
      end 
     end 

     end 

    end 
    end 
end 
0

Ultimamente sto usando s' awesome_printap metodo che funziona secondo il console, così come nelle viste.

L'uscita di colore tipo specifico fa davvero la differenza se è necessario eseguire la scansione visivamente per String o Numeric oggetti (Anche se ho dovuto modificare il mio foglio di stile un po 'al fine di ottenere uno sguardo lucido)

0

Recentemente ho sono diventato un fan di PRY, l'ho trovato incredibilmente per fare cose come l'ispezione delle variabili, il debugging del codice in esecuzione e l'ispezione del codice esterno. Potrebbe essere un po 'eccessivo come una risposta a questa domanda specifica.

5

È possibile utilizzare puts some_variable.inspect. O la versione più corta: p some_variable. E per una resa migliore, puoi usare lo awesome_print gem.

2

risposte Prrevious sono grandi, ma se non si desidera utilizzare la console (terminale), in Rails è possibile stampare il risultato nella vista utilizzando Helper del debug di ActionView::Helpers::DebugHelper

#app/view/controllers/post_controller.rb 
def index 
@posts = Post.all 
end 

#app/view/posts/index.html.erb 
<%= debug(@posts) %> 

#start your server 
rails -s 

risultati (browser)

- !ruby/object:Post 
    raw_attributes: 
    id: 2 
    title: My Second Post 
    body: Welcome! This is another example post 
    published_at: '2015-10-19 23:00:43.469520' 
    created_at: '2015-10-20 00:00:43.470739' 
    updated_at: '2015-10-20 00:00:43.470739' 
    attributes: !ruby/object:ActiveRecord::AttributeSet 
    attributes: !ruby/object:ActiveRecord::LazyAttributeHash 
     types: &5 
     id: &2 !ruby/object:ActiveRecord::Type::Integer 
      precision: 
      scale: 
      limit: 
      range: !ruby/range 
      begin: -2147483648 
      end: 2147483648 
      excl: true 
     title: &3 !ruby/object:ActiveRecord::Type::String 
      precision: 
      scale: 
      limit: 
     body: &4 !ruby/object:ActiveRecord::Type::Text 
      precision: 
      scale: 
      limit: 
     published_at: !ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter 
      subtype: &1 !ruby/object:ActiveRecord::Type::DateTime 
      precision: 
      scale: 
      limit: 
     created_at: !ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter 
      subtype: *1 
     updated_at: !ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter 
      subtype: *1 
Problemi correlati