2013-07-19 41 views
-1

如果我在Ruby或Ruby on Rails中收到一条很大的错误消息,但我不明白,如何在之前解密错误消息,并将其发送到堆栈溢出。是否有任何工具提示或技巧能够帮助我深入了解错误消息的底部,并找到实际存在问题的代码?如何在rails上读取ruby和ruby中的错误信息?

+0

我想有些代码可以帮助解决这个问题,但主要是我想这样做,因为我发现大量的问题需要堆栈跟踪来解决问题,并且当阅读RoR错误消息非常容易时,我想我会写一个社区wiki,希望减少混乱 – OneChillDude

回答

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)` 
    

所以,现在,我们有消息

  1. 我们可以通过阅读本的错误可以追溯到文件

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

    告诉这doen't一定意味着该文件中发生的错误,但是那得到的方法之一称为导致错误是在这个文件

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

  3. 的是,接下来的部分告诉我们,在块require发生错误:

    Rakefile:5:in 'require' 
    

所以你看,阅读错误消息并没有那么糟糕。我们所要做的只是查看,直到找到我们知道的文件是相关的,然后我们找到行号我们想要,然后我们修复代码。

0

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

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

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