devise에서 sign_out시 서버가 기절할 경우. (Ruby Or Rails Bug인듯)

내용추가.
이리저리 좀 더 상황을 지켜보니..
Devise의 문제가 아니라 Ruby 1.9.2 or Rails 3.1 의 버그인것 같다.
path를 못찾는 경우 에러를 내지 않고, 끝까지 찾는다. 끝까지!

————

Devise를 붙이고 sign_out을 했는데 반응이 없다.

그러다가 몇초 후 내 맥도 반응이 없다.
Activity Monitor를 띄워보니, ruby 메모리 사용이 1.8G
응?
1.8G?
내눈을 의심하고 다시 봤는데 1.8G
가운데 .(점)만 빼면 욕이 되는 1.8G..
ㅡ.,ㅡ;
처음에는 84MB

 

 

sign_out누르니깐 몇초만에 1GB 돌파!!!

 

 

그대로 내비두면 4GB 메모리를 다 잡수실 기세라서 1GB넘는 시점에서 강제종료 해버렸다.
뭐가 문제인지 이리저리 추적을 해보니..
destroy 액션(sign_out)에서

sign_out_and_redirect

요 녀석이 의심스러워 이리저리 해보니, 역시나 이 녀석이 범인이었다.
문제는 redirect시 :root_path로 redirect하게 될 때가 있는데, 이때 :root_path를 찾지 못해 생기는 버그였다.
해결책은 크게 2가지가 있다.
1. :root_path를 만들어 주는 방법.
:root_path가 없어서 생기는 버그임으로, :root_path를 만들어 주면 된다.
routes.rb에 가서 주석처리된

 

# root :to => ‘welcome#index’

 

을 주석을 풀어주고, :to는 각자의 상황에 맞게 수정을 해주면 된다.

 

root :to => ‘getAway#Hi’

 

2. sign_out과 redirect를 따로따로.

 

sign_out_and_redirect

 

이 녀석이 하자다보니, 이 녀석을 안써버리면 그만이다.
직접 sign_out 시키고 상황에 맞게 redirect 하면 된다.

sign_out
redirect_to “넌 이미 아웃되었다.”

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중