Ruby On Rails/작은 팁2011/06/15 13:20
내용추가.
이리저리 좀 더 상황을 지켜보니.. 
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 "넌 이미 아웃되었다."



크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Johan Kim hiphapis

TRACKBACK http://hiphapis.net/trackback/195 관련글 쓰기

댓글을 달아 주세요

  1. 안녕하세요.
    저는 root :to => "home#index"가 기본으로 풀려있어서 그런지,
    아직 루비 devise 때문에 컴퓨터가 기절한적은 없습니다.
    트랙백 걸려고 검색 하다 들어와서, 루비온 레일즈 관련 포스트 잘 읽고 가네요..:D
    행복한 하루 되세요!

    2011/10/30 18:51 [ ADDR : EDIT/ DEL : REPLY ]
  2. 공부를 시작한지 얼마안된 초보인데,이렇게 많고 좋은 자료를
    공유할수 있게 해주셔서 정말 감사드립니다..^^

    2012/04/26 23:26 [ ADDR : EDIT/ DEL : REPLY ]