如题,不管进什么路径都会报 500 错误
Rails 错误日志:
A SystemStackError occurred in controller_name#action:
stack level too deep
vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.11/lib/active_support/notifications/instrumenter.rb:23
然后我把项目重启一下就好了。。。
项目在服务器上是 Nginx+Unicorn,报错时看了 Nginx 日志,显示 time out,看 Unicorn 日志没有错误日志,真心不知道怎么解了
请大家出出主意,谢谢
现在正在把服务器的更新包都更新下,bundle update 以前也用过了,还是没用。。。
... 这错误日志不是很明显吗?死循环了。 不管进什么路径都会报500错误
或许某个地方 A redirect_to B then B redirect_to A ? 信息太少 你还是得自己找。
@raven @Teddy @heimirror @shatle 找到目标代码了,比较奇怪,我去研究下。。
# Mongoid
DbUser.default_scope DbUser.where(
:app_name.in => [nil, project_name]
)
这句代码每次 before_filter 都会执行,运行个几百次后就报错了。。。。。 正在找原因,和修复方法。。。
@shatle 这一句每次进控制器都会执行。。 然后我换成在模型里执行
default_scope -> {
where(
:app_name.in => [nil, get_project_name]
)
}
get_project_name 不同的用户进入都会不同的 但我发现,只有第一次生效了,后面的都不起作用了,就算 get_project_name 的值改了,查询语句还是没变
default_scope 的问题解决了
default_scope -> { where({xx => yy}) }
default_scope where({aa => bb})
上面那样会使得第一个 default_scope 的值永远是第一次运行的结果。。。 把两个顺序换一下,或是把第二个 default_scope 改为
default_scope -> { where({aa => bb}) }
就好了,想去 github 提交下,可是英文不行,还是算了。。。