2009-05-24 14 views

Odpowiedz

113

.inspect metoda dowolnego obiektu powinny format jest poprawnie na wyświetlaczu, po prostu zrób ..

<%= theobject.inspect %> 

Sposób .methods mogą być również użyteczne:

<%= theobject.methods.inspect %> 

To może pomóc, aby umieścić, że w <pre> znaczniki, w zależności od danych

+8

tak powinno to być odpowiedź imho –

+0

Ten pracował dla mnie świetnie w Sinatry. –

+1

tylko oszczędność czasu dla tych, którzy szukają lepszego formatowania w konsoli: 'putsobject.inspect.gsub (", "," \ n ")' – Gus

63

W widokach:

include DebugHelper 

...your code... 

debug(object) 

W kontrolery, modele i inne Kod:

puts YAML::dump(object) 

Source

+0

DebugHelper za debug (object) podnieść niezdefiniowanej metody 'DebugHelper'S' :) –

+0

I got That również – tam5

3

Jeśli chcesz tylko odpowiednie dane mają być wyświetlane na stdout (wyjście terminala, jeśli używasz z wiersza poleceń), możesz użyć p some_object.

8

W widoku można użyć <%= debug(yourobject) %>, który wygeneruje widok YAML danych. Jeśli chcesz coś w swoim logu, powinieneś użyć logger.debug yourobject.inspect.

6

Można również użyć YAML :: dump skrótów (y) pod konsolą szyn:

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

Jeśli chcesz tylko przeglądać zawartość niektórych ciągów znaków, spróbuj użyć podbicie (na przykład w modele, kontrolery lub inne niedostępne miejsce). Masz ślad za darmo :)

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

Ja też bardzo zachęcamy do wypróbowania ruby-debug:

To niesamowicie pomocny ul!

0

Używam tego :)

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

Ostatnio używam awesome_print „s ap metodę, która działa na konsoli, a także w widokach.

Wyjście kolorowy typu specyficzne naprawdę robi różnicę, jeśli trzeba wizualnie skanowanie String lub Numeric obiektów (Chociaż musiałem podkręcić mój arkusz stylów trochę w celu uzyskania polerowane wygląd)

0

Niedawno stałem się fanem PRY, znalazłem to niesamowicie za robienie rzeczy takich jak sprawdzanie zmiennych, debugowanie uruchomionego kodu i sprawdzanie kodu zewnętrznego. Może to być trochę przesada jako odpowiedź na to konkretne pytanie.

5

Można użyć puts some_variable.inspect. Lub krótsza wersja: p some_variable. Aby uzyskać ładniejsze wydruki, można użyć urządzenia awesome_print gem.

2

Prrevious odpowiedzi są świetne, ale jeśli nie chcesz korzystać z konsoli (terminal), w Rails można wydrukować wynik w widoku za pomocą debugowania pomocnik 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 

Wyniki (w przeglądarce)

- !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 
Powiązane problemy