2011-06-28 10 views
19

Czy istnieje sposób na zwiększenie czytelności wyniku inspekcji?Ruby Sprawdź czytelność?

W języku Perl znajduje się Data::Dumper, dzięki czemu dane wyjściowe są łatwiejsze do odczytania.

Odpowiedz

25

Ruby biblioteka standardowa zawiera PP (skrót od "Pretty print"), który formatuje struktur znacznie lepsze niż standardowe skontrolować:

http://www.ruby-doc.org/stdlib/libdoc/pp/rdoc/index.html

Musisz require 'pp' u góry pliku źródłowego, zanim będzie można go użyć, a następnie po prostu zastąp kod p obj przez pp obj.

Uważam, że jest to szczególnie użyteczne szczególnie w przypadku skrótów i tablic!

+1

PP doda także pretty_inspect() do modułu jądra, więc możesz po prostu zastąpić wywołania inspect() tym. – tjbp

5

Oprócz rozwiązania "pp", yaml może być rozwiązaniem.

Spróbuj:

require 'yaml' 
puts [1,2,3=>'three'].to_yaml 

Otrzymasz:

--- 
- 1 
- 2 
- 3: three 

i kompletny odmienne podejście: Napisz wglądu do kodu jeśli masz wglądu-problem z konkretnej klasy

Przykład:

class MyTest 
    def initialize() 
    @created = Time.now 
    end 
    def inspect() 
    "Hi, I'm the objected created at #{@created}. That's #{Time.now - @created} seconds ago" 
    end 
end 

x = MyTest.new 
sleep 5 
puts x.inspect 

Otrzymasz

Hi, I'm the objected created at 2011-06-28 12:48:38 +0100. That's 5.0 seconds ago 
+1

Najbardziej lubię to rozwiązanie. Nie muszę nawet wymagać "yaml" podczas korzystania z konsoli szyn. Dzięki za publikację –

0

To będzie działać i wyglądać świetnie :)

w gemfile:

group :development do 
    gem 'table_print', '~> 1.5.3' 
end 

w widoku:

<pre> 
<%= TablePrint::Printer.new(@users, []).table_print %> 
</pre> 
1

jak @tjbp powiedział: po prostu użyj pretty_inspect() zamiast inspekcji()

da ci to miłe złamanie linii i wcięcie

Powiązane problemy