【发布时间】:2014-12-03 16:39:44
【问题描述】:
上下文: 我正在构建一个非常长的 sql 字符串并使用 ActiveRecord 执行它。当它失败时,它会注销错误(包括原始查询)并占用 5 页的屏幕空间。因为我已经捕获了异常,所以不需要通知我有错误,它只会使日志记录混乱。所有暂时关闭记录器或劫持 IO 流的尝试都是徒劳的。
问题:如何防止记录该异常?
示例:(我知道这段代码很多是多余的,但我的意思是,即使放在一起也行不通)
really_long_query = "select * from posts where ..."
ActiveRecord::Base.logger.level = 10
$stderr = $stdout = $stdin = STDOUT = STDERR = STDIN = IO.new(IO.sysopen('/dev/null', 'w+'))
silence_stream(STDOUT){
ActiveRecord::Base.connection.execute really_long_query # TURN LOGGING OFF FOR THIS LINE
} # => still logs the exception to the console, despite all the above code
我的结论:基于上述结果,我假设 ActiveRecord 必须使用
- 不同的记录器AND
- 第 3 行不包含流
【问题讨论】:
标签: ruby ruby-on-rails-4 logging stream rails-console