【发布时间】:2017-04-09 09:24:28
【问题描述】:
我正在遵循答案here 的建议,并已确认 :tailcall_optimization=>true 和 :trace_instruction=>false,但我仍然得到:
SystemStackError: 堆栈级别太深
...
...8696 级...
我做错了什么?
def persist_shipments_then_next(prev_data)
persist_shipments(prev_data)
next_token = prev_data['NextToken']
puts next_token
unless next_token.nil?
next_data = @client.list_inbound_shipments_by_next_token(
next_token
).parse
persist_shipments_then_next(next_data)
end
end
更新:我从 application.rb 中删除了以下内容并且它可以工作 WTF?:
RubyVM::InstructionSequence.compile_option = {
tailcall_optimization: true,
trace_instruction: false
}
【问题讨论】:
-
rubyappcare.com/blog/… 希望这将有助于找出错误的确切原因。
-
检查这个:nithinbekal.com/posts/ruby-tco。我认为是
tailcall_optimizer导致问题的原因
标签: ruby-on-rails ruby recursion pagination tail-recursion