2009-05-24 15 views

Respuesta

113

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

+8

sí, esto debería ser la respuesta en mi humilde opinión –

+0

esto funcionó muy bien para mí en Sinatra. –

+1

solo un ahorro de tiempo para aquellos que buscan un mejor formateo en la consola: 'pone theobject.inspect.gsub (", "," \ n ")' – Gus

63

En vistas:

include DebugHelper 

...your code... 

debug(object) 

En los controladores, modelos y otros códigos:

puts YAML::dump(object) 

Source

+0

depuración de DebugHelper (objeto) elevar método no definido 'DebugHelper de :) –

+0

tengo que también – tam5

3

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.

8

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.

6

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:

¡Es ayuda increíblemente ul!

0

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 
0

Ú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)

0

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.

5

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.

2

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 
Cuestiones relacionadas