我对 Ruby 还很陌生,但是我遇到了一个问题,我无法深入了解。
我的简单应用程序运行良好,然后在将 Rails 版本升级到 3.2.8 后,我在尝试查询数据库中的记录时遇到了问题。这在使用 Rails 3.0.7 时工作正常,但在升级到 rails 3.2.8 后它开始失败,并出现 Stack Level too deep 错误。
我的模型如下所示:
class Resource < ActiveRecord::Base
validates :title, :presence => true,
:length => { :minimum => 5}
validates :link, :presence => true
validates :date_submitted, :presence => true
has_many :comments
validates_format_of :link, :with => URI::regexp(%w(http https))
validates :link, :uniqueness => {:scope => :link, :message => "This item has already been submitted"}
end
当我从控制台调用 Resource.all 时,失败并出现以下错误:
SystemStackError: stack level too deep from /home/tom/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb/workspace.rb:80 也许是 IRB 错误!
它似乎也发生在其他型号上,而且在升级之前它运行良好的事实似乎表明它是另一回事。有没有人知道我应该在哪里寻找 - 错误信息非常有限。
更新:在进行更多挖掘之后,当更改为 Rails 3.2.1 时,这似乎开始中断。Rails 3.2.0 及更低版本 - 我的应用程序运行良好 - 3.2.1 或更高版本导致堆栈级别太深问题。
更新2:发现问题。我正在使用导致问题的SearchLogic gem。从 GemFile 中删除它解决了我的问题。