Szukam sposobu na zrzucenie struktury obiektu, podobnie jak funkcje PHP print_r
i var_dump
dla celów debugowania.Czy istnieje odpowiednik print_r lub var_dump w Ruby/Ruby on Rails?
Odpowiedz
.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
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
.
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
.
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:
- 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
To niesamowicie pomocny ul!
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
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)
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.
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.
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
- 1. trudno zrozumieć print_r/var_dump dla obiektu
- 2. Print_r niczego nie zwraca; var_dump pokazuje NULL
- 3. Różnica między var_dump, var_export i print_r
- 4. Odpowiednik HTML dla Ruby on Rails?
- 5. Ruby on Rails: Czy odpowiednik "form_for (: product, ...)" i "form_for (@product, ...)"?
- 6. Co to jest odpowiednik php w print_r() w python?
- 7. Czy xdebug upiększa var_dump?
- 8. wykluczyć własność prywatną z print_r lub obiektu?
- 9. Czy istnieje coś takiego jak MAMP dla Ruby on Rails?
- 10. Ruby on Rails: Jak sprawdzić, czy model istnieje
- 11. Czy Ruby/Rails ma odpowiednik ++?
- 12. Czy istnieje narzędzie do raportowania lub klejnot w Ruby on Rails
- 13. Czy istnieje układ Ruby on Rails layouts/css?
- 14. Czy istnieje odpowiednik javascript()?
- 15. Przechowuj wynik print_r w zmiennej jako ciąg lub tekst
- 16. Ruby on Rails on IIS?
- 17. Czy istnieje nieinstalowalna wersja gry Fiddler lub odpowiednik?
- 18. Czy istnieje odpowiednik języka sqlite3_limit w PHP?
- 19. Konwersja projektu Ruby on Rails do projektu JRuby on Rails
- 20. Czy istnieje odpowiednik XDomainRequest w Firefoksie?
- 21. Czy istnieje odpowiednik Rake w Pythonie?
- 22. Czy istnieje odpowiednik .apk w ios
- 23. Nancy: czy istnieje odpowiednik Server.MapPath ("~ /")?
- 24. Czy istnieje binarny odpowiednik System.Text.StringBuilder?
- 25. Czy istnieje nieglobalny odpowiednik perlbrew?
- 26. Czy w języku Java istnieje odpowiednik epollu?
- 27. Nowy projekt: Ruby on Rails lub Symfony2 (lub inny framework)
- 28. Usługa sieci Web: PHP lub Ruby on Rails lub Python?
- 29. Architektura wielościeżkowa w Ruby on Rails
- 30. Czy warto się nauczyć Ruby On Rails
tak powinno to być odpowiedź imho –
Ten pracował dla mnie świetnie w Sinatry. –
tylko oszczędność czasu dla tych, którzy szukają lepszego formatowania w konsoli: 'putsobject.inspect.gsub (", "," \ n ")' – Gus