【问题标题】:Disable stack trace display in Rails console在 Rails 控制台中禁用堆栈跟踪显示
【发布时间】:2016-03-10 00:12:47
【问题描述】:

有什么方法可以减少 Rails 控制台中错误报告的冗长程度?具体来说,关闭堆栈跟踪显示?大多数时候它没有用,当我患有愚蠢的手指时,它非常烦人。

当我输入如下内容时:

MyModel.vtrsyr

我不需要堆栈跟踪来告诉我没有 'vtrsyr' 方法

【问题讨论】:

    标签: ruby-on-rails-4 rails-console


    【解决方案1】:

    重要的是 Rails 控制台使用 irb,并且可以访问 irb 配置选项的范围

    $ rails c
    Loading development environment (Rails 4.2.0)
    >> conf
    => conf.ap_name="irb"
    conf.auto_indent_mode=false
    conf.back_trace_limit=16
    .
    .
    .
    

    它就是:conf.back_trace_limit。所以:

    conf.back_trace_limit = 0
    

    将有效地禁用当前会话的回溯,输出将简洁明了:

    >> MyModel.gnu
    NoMethodError: undefined method `gnu' for MyModel:Class
    

    >> obj.do_defective_math
    ZeroDivisionError: divided by 0
    

    为了方便一点,可以在 ~/.irbrc 中定义一个函数。比如:

    def toggle_trace
      if conf.back_trace_limit > 0
        conf.back_trace_limit = 0
      else
        conf.back_trace_limit = IRB.conf[:BACK_TRACE_LIMIT]
      end
    end
    

    可以调用控制台会话来根据需要禁用或启用回溯

    【讨论】:

    • 这太棒了。请注意,要在 Rails Server 中执行此操作,您可以通过以下方式实现:stackoverflow.com/questions/29169059/… 请参阅我的答案注释 - 我必须结合 2 个解决方案才能最终停止引用我不维护的源代码的无用垃圾输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 2017-10-24
    • 2022-12-23
    • 2011-12-04
    • 2019-12-18
    • 2011-12-19
    相关资源
    最近更新 更多