我在运行整个程序的主文件中调用两个文件,handlers.rb和core.rb当我运行主文件时,main.rb我收到以下错误。
handlers.rb:4: stack level too deep (SystemStackError)
当我运行handlers.rb时,当我运行core.rb时,我得到了相同的错误
core.rb:6: stack level too deep (SystemStackError)
core.rb有
require 'mail'
require 'json'
load './handlers.rb'
handlers.rb有
require 'twilio-ruby'
require 'json'
load './core.rb'
require 'mail'
我不知道为什么我会收到这些错误,有什么想法吗?感谢
答案 0 :(得分:3)
您正在递归使用load
方法。加载与require
不同,因为require
确实会让您只包含一次文件,其中load
会让您多次包含该文件。
文件core.rb和handler.rb互相引用load
。
答案 1 :(得分:0)
"堆栈级别太深"总是表示递归调用。
例如:
def foo
foo
end
如果你用irb打电话,你会得到:
SystemStackError:堆栈级别太深
在您的代码中,您递归加载这两个文件。 load()不喜欢这样。当你做require()
时,我也会反对这个建议优先决定只有一个文件应该加载另一个文件,然后只保留一个加载而不是另一个加载。