【发布时间】:2017-08-06 09:45:38
【问题描述】:
我正在进行 Rails 升级,并已成功将其升级到 4.1.16
现在跳转到4.2...能够成功运行bundle update,但是当我尝试运行我的规范时,我得到了一个很少的SystemStackError,如下所示:
//home/vagrant/.rvm/gems/ruby-2.2.3/gems/arel-6.0.4/lib/arel/visitors/reduce.rb:14:in `rescue in visit': stack level too deep (SystemStackError)
from /home/vagrant/.rvm/gems/ruby-2.2.3/gems/arel-6.0.4/lib/arel/visitors/reduce.rb:13:in `visit'
from /home/vagrant/.rvm/gems/ruby-2.2.3/gems/arel-6.0.4/lib/arel/visitors/to_sql.rb:241:in `block in visit_Arel_Nodes_SelectCore'
from /home/vagrant/.rvm/gems/ruby-2.2.3/gems/arel-6.0.4/lib/arel/visitors/to_sql.rb:240:in `each'
from /home/vagrant/.rvm/gems/ruby-2.2.3/gems/arel-6.0.4/lib/arel/visitors/to_sql.rb:240:in `each_with_index'
from /home/vagrant/.rvm/gems/ruby-2.2.3/gems/arel-6.0.4/lib/arel/visitors/to_sql.rb:240:in `visit_Arel_Nodes_SelectCore'
from /home/vagrant/.rvm/gems/ruby-2.2.3/gems/arel-6.0.4/lib/arel/visitors/to_sql.rb:210:in `block in visit_Arel_Nodes_SelectStatement'
from /home/vagrant/.rvm/gems/ruby-2.2.3/gems/arel-6.0.4/lib/arel/visitors/to_sql.rb:209:in `each'
from /home/vagrant/.rvm/gems/ruby-2.2.3/gems/arel-6.0.4/lib/arel/visitors/to_sql.rb:209:in `inject'
... 9265 levels...
from /home/vagrant/.rvm/gems/ruby-2.2.3/bin/rspec:23:in `load'
from /home/vagrant/.rvm/gems/ruby-2.2.3/bin/rspec:23:in `<main>'
from /home/vagrant/.rvm/gems/ruby-2.2.3/bin/ruby_executable_hooks:15:in `eval'
from /home/vagrant/.rvm/gems/ruby-2.2.3/bin/ruby_executable_hooks:15:in `<main>'
我正在尝试找出这里需要更改/更新的内容,谢谢。
P.S: Ruby 版本是 2.2.3
#更新: 我在之前的堆栈跟踪中犯了一个错误,是错误的,我现在已经更新了。
#更新(03/16):
这似乎是由设计引起的......
我设法将错误追溯到config/initializers/devise.rb 中的以下行:
require 'devise/orm/active_record'
【问题讨论】:
-
您定义了
default_scope吗?你使用多态关联吗? -
是的,我确实有
default_scopes 和多态关联 @spickermann -
这个讨论可能很有趣:github.com/rails/rails/issues/19409
-
@spickermann 我已经尝试注释掉
self.default_scope只是为了确定。我在之前发布的错误跟踪中也犯了一个错误,现在更新了。 -
检查无限循环。
标签: ruby-on-rails ruby devise upgrade rails-4-upgrade