堆栈级别太深(SystemStackError) - 不确定为什么我收到此错误

时间:2014-05-29 01:48:20

标签: ruby-on-rails ruby ruby-on-rails-3

我在运行整个程序的主文件中调用两个文件,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'

我不知道为什么我会收到这些错误,有什么想法吗?感谢

2 个答案:

答案 0 :(得分:3)

您正在递归使用load方法。加载与require不同,因为require确实会让您只包含一次文件,其中load会让您多次包含该文件。

文件core.rb和handler.rb互相引用load

答案 1 :(得分:0)

"堆栈级别太深"总是表示递归调用。

例如:

  def foo
    foo
  end

如果你用irb打电话,你会得到:

SystemStackError:堆栈级别太深

在您的代码中,您递归加载这两个文件。 load()不喜欢这样。当你做require()

时,我也会反对这个建议

优先决定只有一个文件应该加载另一个文件,然后只保留一个加载而不是另一个加载。