如何在rails上读取ruby和ruby中的错误消息?

时间:2013-07-19 15:04:05

标签: ruby-on-rails ruby

如果我在Ruby或Ruby on Rails中收到大错误消息并且我不理解它,我怎么能在之前解密错误消息将其发布到堆栈溢出。是否有任何工具提示或技巧可以帮助我找到错误消息的底部,并找到实际存在问题的代码?

2 个答案:

答案 0 :(得分:3)

如果仔细观察,Ruby和Ruby on Rails中的错误消息实际上非常清楚。 “堆栈跟踪”实际上非常有用。它向您展示了解决问题最需要的三件事:

  1. 所涉及的所有文件的路径
  2. 这些文件的行号
  3. 发生错误的块的名称。示例:

    C:\Users\krishnac\Documents\NetBeansProjects\githupbdcm\trunk>bundle exec rake 
    rake aborted!
    incompatible library version - C:/Ruby200/lib/ruby/gems/2.0.0/gems/bcrypt-ruby-3.1.1.rc1-x86-mingw32/lib/bcrypt_ext.so
    C:/Users/krishnac/Documents/NetBeansProjects/githupbdcm/trunk/config/application.rb:13:in <top (required)>'
    C:/Users/krishnac/Documents/NetBeansProjects/githupbdcm/trunk/Rakefile:5:in require'
    C:/Users/krishnac/Documents/NetBeansProjects/githupbdcm/trunk/Rakefile:5:in `<top (required)>'
    `(See full trace by running task with --trace)`
    
  4. 现在我们收到了消息

    1. 通过阅读本文可以看出错误可以追溯到文件

      C:/Users/krishnac/Documents/NetBeansProjects/githupbdcm/trunk/Rakefile:5
      

      这并不一定意味着此文件中出现错误,但其中一个被调用的方法导致错误在此文件中

    2. :5表示第五行是发生错误的地方。

    3. 下一部分告诉我们块require中发生错误:

      Rakefile:5:in 'require'
      
    4. 所以你看,阅读错误信息并不是那么糟糕。我们所要做的就是仔细查看,直到找到我们知道的相关文件,然后我们找到我们想要的行号,然后我们修复代码。

答案 1 :(得分:0)

一般来说,Ruby on Rails会为您提供错误的位置和描述。这样,您就不需要将错误发布到SO。

根据经验,最好先查看脚本中出现的第一条错误消息并先修复它。通常,一个错误会导致程序中出现更多错误,修复它们会解决其他问题。

最后,一个有用的工具是使用调试器。此gem允许您在可疑错误处停止代码并逐行读取代码。可以在GitHub上找到该文档:https://github.com/cldwalker/debugger