Ich habe eine 3.0.7 App mit aktiven Gerüst von Github Vhochstein/Master. Ich verwende die 3.x-kompatible Version, die als Anbieter/Plugin verwendet werden kann, anstatt eine Edelstein-Installation zu erfordern.ActiveScaffold gibt Stack zu tief Fehler; kann keine Rekursion finden
In der Produktion trifft es ActionView :: Template :: Error (Stapelebene zu tief) :.
[email protected]:~/beaumont/current$ script/rails server -p 4000
ActionView::Template::Error (stack level too deep):
8: depth = Kernel.caller.count
9: logger.info "pagination: #{@page} #{depth}"
10: %>
11: <%= render :partial => 'list_pagination_links', :locals => { :current_page => @page } if @page.pager.infinite? || @page.pager.number_of_pages > 1 %>
12: </div>
13: <br clear="both" /><%# a hack for the Rico Corner problem %>
14: </div>
Ich begann in meinem Code für einige Rekursion suchen, und dann für den Zyklus in meinem Datenmodell, das AS wurde vermasseln. Es passierte zuerst mit mod_passenger, aber es tritt auch auf, wenn der Server scripts/rails auf dem Server angemeldet ist. (Dies ist meine Beta-Testmaschine)
Es stirbt immer in gerenderten Anbieter/Plugins/Active_scaffold/Frontends/Standard/views/_list_pagination.html.erb (144,3ms 157). Ich hackte ActionView, um den Kernel.caller.count zu loggen, so dass ich sehen konnte, ob ein Stack wuchs und wuchs, aber ich sehe das nicht. Ich sehe Stapeltiefen so hoch wie 180. Es scheint nicht wichtig zu sein, wenn ich den Stack größer mache, bevor ich mit den Rails starte, aber vielleicht gibt etwas den Stack wieder zurück.
In _list_pagination.html.erb ruft es list_pagination_links auf. Wenn ich das ausrufe, dann scheitern die Dinge nicht. Ich habe versucht, list_pagination_links nichts zu tun (Code nicht drin!), Aber es ist immer noch bei diesem Render-Aufruf gestorben. Ich frage mich, ob es im Render-Code selbst ist, dass der Stack entweder rekursiv oder einfach zu groß ist.
Dies passiert nicht auf meinem Laptop (Debian-Sequeeze, 32-Bit) im Entwicklungsmodus, passiert aber auf meiner Beta-Produktionsmaschine (XEN VM, 32-Bit, debian Squeeze). Es kam manchmal auf meinem Laptop vor, aber nicht in einer wiederholbaren Art und Weise, und das Neustarten der Schienen löste die Probleme. Ich habe den Produktionsmodus noch nicht auf meinem Laptop versucht, und ich vermute auch, dass es datenabhängig sein kann!