2014-11-06 28 views
1

我一直在許多Rails應用程序中工作,在此期間,我發現了很多錯誤,但有一件事真的讓我生氣了,就是顯示終端中的Ruby文件名的錯誤。如何在遇到錯誤時隱藏Ruby文件位置?

我試圖在Rails的控制檯運行

User.find(3) 

,而且,雖然我沒有一個以上的用戶記錄,這顯然是出現了錯誤,我是意識到這一點。但位置部分真的搞砸了我的終端。

以下是錯誤日誌:

ActiveRecord::RecordNotFound: Couldn't find User with 'id'=3 
     from /home/travis/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.0.beta2/lib/active_record/core.rb:150:in `find' 
     from (irb):79 
     from /home/travis/.rvm/gems/ruby-2.1.2/gems/railties-4.2.0.beta2/lib/rails/commands/console.rb:110:in `start' 
     from /home/travis/.rvm/gems/ruby-2.1.2/gems/railties-4.2.0.beta2/lib/rails/commands/console.rb:9:in `start' 
     from /home/travis/.rvm/gems/ruby-2.1.2/gems/railties-4.2.0.beta2/lib/rails/commands/commands_tasks.rb:68:in `console' 
     from /home/travis/.rvm/gems/ruby-2.1.2/gems/railties-4.2.0.beta2/lib/rails/commands/commands_tasks.rb:39:in `run_command!' 
     from /home/travis/.rvm/gems/ruby-2.1.2/gems/railties-4.2.0.beta2/lib/rails/commands.rb:17:in `<top (required)>' 
     from /home/travis/.rvm/gems/ruby-2.1.2/gems/activesupport-4.2.0.beta2/lib/active_support/dependencies.rb:248:in `require' 
     from /home/travis/.rvm/gems/ruby-2.1.2/gems/activesupport-4.2.0.beta2/lib/active_support/dependencies.rb:248:in `block in require' 
     from /home/travis/.rvm/gems/ruby-2.1.2/gems/activesupport-4.2.0.beta2/lib/active_support/dependencies.rb:233:in `load_dependency' 
     from /home/travis/.rvm/gems/ruby-2.1.2/gems/activesupport-4.2.0.beta2/lib/active_support/dependencies.rb:248:in `require' 
     from /home/travis/tumpy/bin/rails:8:in `<top (required)>' 
     from /home/travis/.rvm/gems/ruby-2.1.2/gems/activesupport-4.2.0.beta2/lib/active_support/dependencies.rb:242:in `load' 
     from /home/travis/.rvm/gems/ruby-2.1.2/gems/activesupport-4.2.0.beta2/lib/active_support/dependencies.rb:242:in `block in load' 
     from /home/travis/.rvm/gems/ruby-2.1.2/gems/activesupport-4.2.0.beta2/lib/active_support/dependencies.rb:233:in `load_dependency' 
     from /home/travis/.rvm/gems/ruby-2.1.2/gems/activesupport-4.2.0.beta2/lib/active_support/dependencies.rb:242:in `load' 
     from /home/travis/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require' 
     from /home/travis/.rvm/rubies/ruby- 

我期待解決的辦法是隱藏的位置部分,只顯示該錯誤,表示

ActiveRecord::RecordNotFound: Couldn't find User with 'id'=3 

回答

2

IRB具有back_trace_limit選項缺省值爲16

irb(main):001:0> IRB.CurrentContext.back_trace_limit 
#=> 16 

將其設置爲0抑制整個回溯:

irb(main):002:0> IRB.CurrentContext.back_trace_limit = 0 
#=> 0 
irb(main):003:0> User.find(0) 
# User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 0 LIMIT 1 
#ActiveRecord::RecordNotFound: Couldn't find User with id=0 
irb(main):004:0> 

您也可以通過這個作爲命令行選項:

$ rails console -- --back-trace-limit=0 
+0

是的,我已經使用撬,並試圖忽略很多回溯的,但我想刪除所有這些在默認導軌引擎中回溯。不Pry – 2014-11-06 14:59:56

+0

@AruzParajuli更新了我的答案 – Stefan 2014-11-06 15:39:01

+0

雅看起來不錯,irb。但是如果我想在終端而不是irb中實現呢。例如像運行rake db時:遷移如果我有一些錯誤,我想隱藏它。那可能嗎? – 2014-11-06 17:10:07

相關問題