【发布时间】:2023-03-24 11:43:01
【问题描述】:
我已经在 ruby ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-darwin14] 和 (Rails 4.2.5.2) 上定义了这个方法
def log_method_backtrace
backtrace = []
(4..8).map do |i| # 4 because before is ... map, log_method_backtrace...
b = caller[i][/\/(?:.(?!\/))+$/]
b = b[1..-2] # *This is the error line
b = b.sub(':in `', '#')
backtrace << "#{b} <- "
end
log "(Method called from #{backtrace.join})"
end
当我调用它时会抛出这个错误:
NoMethodError: undefined method `[]' for nil:NilClass from (pry):5:in `block in log_method_backtrace'
但是,如果我在该行中放置一个调试器断点(我正在使用 binding.pry),并运行同一行,它就可以工作。
【问题讨论】:
-
你能显示调用者方法的代码吗?它显然有时会返回 nil