Estoy buscando una manera de volcar la estructura de un objeto, similar a las funciones de PHP print_r
y var_dump
por razones de depuración.¿Hay un equivalente print_r o var_dump en Ruby/Ruby on Rails?
Respuesta
El método de cualquier objeto debe formatear .inspect
es correcta para su visualización, acaba de hacer ..
<%= theobject.inspect %>
El método .methods
también puede ser de utilidad:
<%= theobject.methods.inspect %>
que puede ayudar a poner esto en <pre>
etiquetas, dependiendo de los datos
Si sólo desea los datos relevantes que se mostrarán en la salida estándar (la salida del terminal si está ejecutando desde la línea de comandos), puede usar p some_object
.
En una vista puede usar <%= debug(yourobject) %>
que generará una vista YAML de sus datos. Si desea algo en su registro, debe usar logger.debug yourobject.inspect
.
También puede utilizar YAML :: dump abreviada (y) debajo de los rieles de la consola:
>> 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
>>
Si desea simplemente una vista previa de algunos contenidos de la cadena, trate de usar aumento (por ejemplo, en modelos, controladores o algún otro lugar inaccesible). Usted obtener la traza de forma gratuita :)
>> raise Rails.root
RuntimeError: /home/marcin/work/github/project1
from (irb):17
>>
También me animo a probar rubí depuración:
- 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
¡Es ayuda increíblemente ul!
Yo uso este :)
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
Últimamente estoy usando awesome_print 's ap
método que funciona en la consola, así como en las vistas.
La salida de color de tipo específico que realmente hace una diferencia si es necesario escanear visualmente para String
o Numeric
objetos (aunque tuve que ajustar mi hoja de estilo un poco con el fin de conseguir un aspecto pulido)
Recientemente me he vuelto fan de PRY, lo he encontrado increíblemente por hacer cosas como inspeccionar variables, depurar el código en ejecución e inspeccionar el código externo. Puede ser un poco exagerado como respuesta a esta pregunta específica.
Puede usar puts some_variable.inspect
. O la versión más corta: p some_variable
. Y para una salida más bonita, puede usar el awesome_print gem.
respuestas Prrevious son grandes, pero si usted no desea utilizar la consola (terminal), en Rails puede imprimir el resultado en la vista mediante el uso de ayudante de la depuración 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
resultados (en el navegador)
- !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. ¿Cuál es el equivalente de JavaScript de var_dump o print_r en PHP?
- 3. ¿Existe un equivalente de print_r de PHP en Ruby/Rails?
- 4. Ocultar campos de clases específicas de print_r o var_dump
- 5. Print_r equivalente en Liquid
- 6. Diferencia entre var_dump, var_export e print_r
- 7. jQuery: print_r() pantalla equivalente?
- 8. php var_dump ($ object) o print_r ($ object) en un archivo de registro
- 9. ¿Hay un equivalente .NET para Groovy y Grails o Ruby on Rails?
- 10. codificación URL equivalente en ruby on rails
- 11. difícil de entender print_r/var_dump para el objeto
- 12. Django o Ruby on Rails
- 13. ¿Existe un equivalente para var_dump (PHP) en Javascript?
- 14. ¿Hay un rastreador de torrents basado en Ruby on Rails?
- 15. ¿Cuál es el equivalente de php's print_r() en python?
- 16. ¿Hay un 'git sed' o equivalente?
- 17. ¿Hay alguna prueba para Ruby on Rails?
- 18. ¿Hay un buen generador de administración para Ruby on Rails?
- 19. ¿Hay un archivo de Ruby on Rails layouts/css?
- 20. No var_dump() ni print_r() mostrarán información legible ... pero la misma salida confusa. ¿Por qué?
- 21. Convierta un proyecto Ruby on Rails en un proyecto JRuby on Rails
- 22. ¿Cuál es el equivalente de Perl a print_r() de PHP?
- 23. ¿Hay un equivalente PHP de las migraciones de Rails?
- 24. ¿Hay un operador de splat (o equivalente) en Matlab?
- 25. Servicio web: PHP o Ruby on Rails o Python?
- 26. Instalación de Ruby on Rails en Ubuntu o Mint
- 27. ¿Existe un equivalente a respond_to format.xml, etc. de Ruby on Rails en ASP.Net MVC?
- 28. Copie un archivo en Ruby on Rails
- 29. Java: print_r?
- 30. ¿Hay alguna herramienta de informe o una gema en Ruby on Rails
sí, esto debería ser la respuesta en mi humilde opinión –
esto funcionó muy bien para mí en Sinatra. –
solo un ahorro de tiempo para aquellos que buscan un mejor formateo en la consola: 'pone theobject.inspect.gsub (", "," \ n ")' – Gus