生产Rails应用程序中的堆栈级别太深 - 如何获取详细信息?

时间:2010-02-02 21:46:13

标签: ruby-on-rails debugging deployment logging

我正在使用MySQL,Mongrel和Nginx在256MB Slicehost切片上进行Spree的生产和运行。每当我尝试访问应用程序中的任何URL时,我都会收到此错误:

SystemStackError (stack level too deep):
  compass (0.8.17) lib/compass/app_integration/rails/action_controller.rb:7:in `process'
  vendor/plugins/haml/rails/./lib/sass/plugin/rack.rb:44:in `call'

(还有一些测试网址请求在此pastie

在生产模式下我应该使用哪些高级(但是免费和开源)调试策略/工具,这样我才能更好地解决这个问题?

每次都会略有不同,具体取决于控制器。我试过increasing my stack size,但这没有用,因为可能只有一些我找不到的循环。

问题是,如何在生产中获得更详细的确切输出报告?

我正在使用Deprec和Capistrano来执行所有服务器端命令。我正在运行一个3的mongrel集群。我看到的日志文件是:

current/log$ ls
development.log
testsite.com-error.log
mongrel.8000.log
mongrel.8001.log
mongrel.8002.log
mongrel.log
production.log
testsite.com-access.log

我只是在生产模式下寻找一些高级调试策略/工具,所以我可以更好地解决这个问题。也许在本地流量/调试(或有条件地指向!)生产应用程序(实际上是一个临时应用程序)的一些上限任务(人们这样做吗?),或者是什么东西吐出在代码中执行的每一件东西?

由于

3 个答案:

答案 0 :(得分:0)

我会检查你的所有宝石和插件以及你的应用程序可能具有的任何其他依赖项:我猜你错过了某些东西(或者有错误版本的东西)并且它的失败程度非常严重,它可以'甚至吐了一个找不到要求的消息。

答案 1 :(得分:0)

检查你的动作控制器。第7行很可能是循环发生的地方。

答案 2 :(得分:0)

似乎你已经在控制器的第7行发起了一些无休止的递归。检查您是否在方法中调用相同的方法。