Sto cercando un modo per scaricare la struttura di un oggetto, simile alle funzioni PHP print_r
e var_dump
per motivi di debug.Esiste un equivalente print_r o var_dump in Ruby/Ruby on Rails?
risposta
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
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
.
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
.
È 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:
- http://railscasts.com/episodes/54-debugging-with-ruby-debug
- http://www.sitepoint.com/article/debug-rails-app-ruby-debug/
- http://www.datanoise.com/articles/2006/7/12/tutorial-on-ruby-debug
E ' incredibilmente helpf ul!
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
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)
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.
È 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.
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
- 1. php var_dump() vs print_r()
- 2. Qual è l'equivalente JavaScript di var_dump o print_r in PHP?
- 3. Print_r non restituisce nulla; var_dump mostra NULL
- 4. url encode equivalente in ruby on rails
- 5. Esiste un equivalente .NET per Groovy e Grails o Ruby on Rails?
- 6. Esiste un equivalente Phoenix in Rails Console
- 7. var_dump e muore come php, in ruby on rails (eseguire il debug in ruby su binari)
- 8. difficilmente nella comprensione di print_r/var_dump per l'oggetto
- 9. Esiste un operatore splat (o equivalente) in Matlab?
- 10. Esiste un equivalente di std :: bind in javascript o node.js?
- 11. Esiste un equivalente Elixir della funzione `try` di Rails?
- 12. Esiste un equivalente PHP delle migrazioni di Rails?
- 13. Esiste un layout di Ruby on Rails/archivio css?
- 14. Esiste una "git sed" o equivalente?
- 15. Backbone.js o Ember.js con Ruby on Rails
- 16. Come Console.Log, Print_R(), Debug.Trace in C#?
- 17. Esiste un equivalente MessageBox in WPF?
- 18. Non var_dump() né print_r() mostreranno informazioni leggibili .... ma lo stesso output confuso. Perché?
- 19. Esiste un equivalente Rake in Python?
- 20. Esiste un equivalente XDomainRequest in Firefox?
- 21. Esiste un equivalente dojo.hitch in node.js
- 22. Esiste un RRDTool .net equivalente
- 23. Esiste un equivalente standard getch() in C++?
- 24. Node.js/Express.j o Ruby on Rails per un principiante ASSOLUTO
- 25. Ruby on Rails: come verificare se il modello esiste
- 26. Elimina o ricrea un database Ruby on Rails
- 27. Esiste una gemma del quiz per Ruby on Rails?
- 28. Ruby/Rails hanno un equivalente ++?
- 29. Lua on Rails?
- 30. Convertire un progetto Ruby on Rails in un progetto JRuby on Rails
sì questo dovrebbe essere la risposta imho –
questo ha lavorato molto per me in Sinatra. –
solo un risparmio di tempo per chi cerca la formattazione più ordinata in console: 'puts theobject.inspect.gsub (", "," \ n ")' – Gus