2012-12-03 14 views
10

Na moim komputerze RoR rozwoju aplikacji (serwer lokalny, OSX 10.8.1, Ruby 1.9.3, Rails 3.2.8) coś dziwnego zaczęło się pojawiać znikąd (oczywiście ...):SystemStackError wyzwalany przez zmianę plików podczas pracy serwera?

szyn wali serwera (wszystkie trasy są zabijane, restart serwera jest jedynym sposobem, aby dostać pracy znowu) z następującymi wpisami dziennika:

SystemStackError (stack level too deep): 
    actionpack (3.2.8) lib/action_dispatch/middleware/reloader.rb:70 


    Rendered /Users/dekay/.rvm/gems/[email protected]/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.9ms) 
    Rendered /Users/dekay/.rvm/gems/[email protected]/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.2ms) 
    Rendered /Users/dekay/.rvm/gems/[email protected]/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (14.7ms) 

mam google i okazało się, że SystemStackError jest zazwyczaj z powodu nieskończonej pętli, ale jak daleko jak mogę to wyśledzić, nie mam takiej pętli w moim kodzie. Błąd nie wydaje się być na pewnym etapie logiki aplikacji.

Jedynym korelacja pomiędzy awarii serwera i moich działań jest następujący:

  1. zmienić niektóre kod w aplikacji
  2. Reload bieżąca strona internetowa z aplikacją
  3. Boom, serwer ma, komunikat o błędzie .
  4. Żadna strona nie działa po to, błąd jest:

    Routing Error

    Brak dopasowania route [GET] "/"

    Spróbuj uruchomić trasy natarcia uzyskać więcej informacji na temat dostępnych tras.

Czy ktoś może wskazać mi właściwy kierunek, aby to usunąć? PS: Podejrzewam, że stało się to po niedbałej "aktualizacji pakietu". Czy to możliwe?

+0

Jakich klejnotów używasz? Czy masz coś w Monkeypatch w ActiveSupport/ActiveDispatch/etc.? Jakiej wersji łatki używasz Ruby? – Novae

+0

Widzę to na Railsach 3.2.11 i rubinach 1.9.3-p385. Gemenv: https://gist.github.com/coneybeare/4957822 Gemfile.lock: https://gist.github.com/coneybeare/4957828 – coneybeare

Odpowiedz

2

Usunięcie błędu w komunikacie o błędzie stack level too deep w kodzie rails app nie jest łatwe, ponieważ błąd mógł wynikać z różnych przyczyn, a komunikat o błędzie nie jest zbyt pomocny.

Niektóre z przyczyn, które doprowadziły do ​​stack level too deep error:

  1. Niespójność w gems & plugins and any other dependencies wniosku.
  2. Code syntax error
  3. Niespójność spowodowana przez applying db migrations erroneously.

Jeśli błąd się dzieje na rozruchu systemu, to końcówka byłaby bardzo przydatna: http://www.datatravels.com/technotes/2012/07/11/awesome-debugging-for-rails-boot-stacklevel-too-de/

Z opisu wygląda jak aplikacja działa dobrze przez jakiś czas, a następnie rozpoczyna upaść - tak powyższy przypadek rozruchu może nie mieć zastosowania.

Jednym ze sposobów, aby przejść o zastanawianie się problem, by wyizolować konkretny line/block of code który jest przyczyną błędu za pomocą printf debugging

Ponadto, może warto byłoby wycofywanie zmian i coraz system do stanu pracy, a następnie cofnij zmiany stopniowo, aby wyizolować główną przyczynę.

Jest całkiem prawdopodobne, że bundle update spowodował błąd w tym przypadku; więc byłoby dobrym pomysłem, aby sprawdzić nowo dodane zależności i zobaczyć, czy mogą być winowajcą.

+0

Dziękuję za tę odpowiedź. Naprawdę dziwne jest to, że wydaje się, że dzieje się to w reloaderze, kiedy zmieniam plik lokalnie, serwer nie dostaje tego i wydaje się, że się zawiesza. Kiedy rozmieszczam w heroku, tak się nie dzieje. – danieldekay

+1

Wdrożenie Heroku wymusza ponowne uruchomienie serwerów; więc prawdopodobnie nie jest to zbyt zaskakujące, że błąd się tam nie pojawia. Czy aplikacja lokalna działa poprawnie po ponownym uruchomieniu? Czy po pewnym czasie powraca do błędu z tym samym błędem? –

+0

Lokalna aplikacja działa dobrze, jeśli nie zmienię żadnych plików "w działającym systemie". Kiedyś była bezpieczna zmiana plików podczas działania aplikacji, po prostu musiałem przeładować stronę internetową, aby dostać się do nowej rzeczy. – danieldekay

Powiązane problemy