2013-07-10 26 views
5

Có cách nào để giảm lượng đầu ra do Ruby cung cấp khi có lỗi không?Làm cách nào để giảm đầu ra theo dõi ngăn xếp?

Ví dụ:

rspec bowling_spec.rb 
/Users/snowcrash/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require': cannot load such file -- bowling (LoadError) 
    from /Users/snowcrash/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require' 
    from /Users/snowcrash/Developer/Code/Ruby/RSpec/bowling_spec.rb:2:in `<top (required)>' 
    from /Users/snowcrash/.rvm/gems/ruby-2.0.0-p195/gems/rspec-core-2.14.2/lib/rspec/core/configuration.rb:896:in `load' 
    from /Users/snowcrash/.rvm/gems/ruby-2.0.0-p195/gems/rspec-core-2.14.2/lib/rspec/core/configuration.rb:896:in `block in load_spec_files' 
    from /Users/snowcrash/.rvm/gems/ruby-2.0.0-p195/gems/rspec-core-2.14.2/lib/rspec/core/configuration.rb:896:in `each' 
    from /Users/snowcrash/.rvm/gems/ruby-2.0.0-p195/gems/rspec-core-2.14.2/lib/rspec/core/configuration.rb:896:in `load_spec_files' 
    from /Users/snowcrash/.rvm/gems/ruby-2.0.0-p195/gems/rspec-core-2.14.2/lib/rspec/core/command_line.rb:22:in `run' 
    from /Users/snowcrash/.rvm/gems/ruby-2.0.0-p195/gems/rspec-core-2.14.2/lib/rspec/core/runner.rb:80:in `run' 
    from /Users/snowcrash/.rvm/gems/ruby-2.0.0-p195/gems/rspec-core-2.14.2/lib/rspec/core/runner.rb:17:in `block in autorun' 

Tất cả Tôi quan tâm đến là dòng đầu tiên, cannot load such file -- bowling (LoadError). Lý tưởng nhất là tôi muốn Ruby không nhổ phần còn lại của các dòng from.

Điều này có khả thi không?

+2

... Tại sao? Thông tin thêm là tốt, và bạn không bị ép phải đọc nó. Một ngày nào đó bạn sẽ gặp phải một lỗi mà bạn thực sự * làm * muốn một dấu vết ngăn xếp. – meagar

+1

Nó chiếm không gian màn hình có giá trị và làm cho việc đọc lỗi thực tế trở nên khó khăn hơn. Và ngày tôi thực sự muốn có một dấu vết ngăn xếp tôi muốn chạy một chuyển đổi để gọi nó lên. – Snowcrash

Trả lời

2

Đỗ một cái gì đó như thế này:

module Kernel 
    at_exit do 
    case $! 
    when nil, SystemExit, Interrupt 
    else puts $!.message, [email protected] 
    end 
    $stderr.reopen(IO::NULL) 
    $stdout.reopen(IO::NULL) 
    end 
end 
+1

Tốt hơn là tải toàn bộ thư viện cho một tính năng! – vgoff

+2

Có thể là một chút dày đặc ở đây nhưng làm thế nào tôi sẽ sử dụng? – Snowcrash

0

Nếu bạn đang ở trên một hệ điều hành Unix/Linux, và bạn đang chạy thử nghiệm từ dòng lệnh, bạn có thể làm

rspec bowling_spec.rb | head -n 20 

để đảm bảo bạn không phải cuộn lên để xem lỗi của mình.

Các vấn đề liên quan