typo-4.1 불만

Posted by 미스란디르 Sun, 18 Mar 2007 02:56:00 GMT

typo-4.1 혹은 typo-trunk를 설치하면 에러를 보게 된다.

superclass mismatch for class MacroPost

잠시 추적해보았다. (사실은 하다가 안되서 이틀이나 신경질을 부렸다)

lib/text_filter_plugin.rb 에서는 TextFilterPlugin 클래스와 Typo::Textfilter::MacroPost / MacroPre 클래스를 정의한다.

이름에서 보면 대충 텍스트필터를 위한 클래스 같다. 정체야 어쨌든, MacroPost 는 TextFilterPlugin을 상속받는데, 요 TextFilterPlugin이 전에 썼던거랑 다른거랜다. 상황을 보니 서버를 띄우고 첫번째 페이지로딩에선 괜찮고 두번째부터 그런다.

  • 첫번째 의심. 혹시 TextFilterPlugin을 다른데서 정의하고 있나? - 전혀 없다.
  • 두번째 의심. 혹시 루비버그? TextFilterPlugin이 수정되고 다시 상속되면 에러가 뜨나?. 해서 두번 load하는 테스트 파일을 만들어서 시도. - 역시 아니다.
  • 세번째 의심. 혹시 Typo::Textfilter가 아니라 Typo::TextFilter아냐? ... 아니다 -_-;; TextFilter라는 이름은 model/text_filter.rb에서 이미 사용하고 있고 이건 그거랑 관련은 있지만 다른 놈이라 이름을 다르게 한건가보다.
  • 네번째 의심. TextFilterPlugin이 이미 있는데 왜 또 로딩하나? 해서 TextFilterPlugin.object_id와 Typo::Textfilter::MacroPost.suplerclass.object_id 를 확인. 엇? 두번째 로딩부터 값이 달라진다. 그렇다면 역시 이름공간에서 TextFilterPlugin이 사라지고, 다시 로딩하는 과정에서 골때리는 문제가 생긴거다.

const_missing과 load를 다루는 rails 파트는 activesupport의 dependencies.rb 이다. 여기서 특정 상수가 없으면 파일을 찾아서 로딩하는데, 여길 보니 clear 라는 메서드가 있고, 이녀석이 동적으로 불러온 상수들을 이름공간에서 지워버린다.

그렇다면 해결책은? ...이랄까, 그냥 typo를 production 환경으로 돌리면 된다. 저건 development환경일때 매번 다시 로딩하기 위한 수단이었던거다. 뭐, 허무하기 짝이 없다.;

Posted in  | Tags ,  | 3 comments | no trackbacks

커멘트 openid사용

Posted by 미스란디르 Thu, 18 Jan 2007 21:22:00 GMT

블로그 커멘트에 openid를 사용하기로 했다.

사실 별 생각이 없었는데,

#perky의 updong님이 openid지원하셨다고 자랑을 하셔서 나도모르게 뽐뿌를 받아서 typo를 대충 고쳤다.

그 결과 현재 커멘트 이름에는 openid만 쓸 수 있다. openid 인증서버는 뭐든 상관없어서 자기가 만들어서 해도 된다. 나는 myid.net 을 썼다. (요 사이트도 rails로 만들었고, typo에서 내가 쓴 것과 같은 라이브러리를 이용해서 openid server를 구현했다) 다들 openid 하나씩 만드시고 커멘트 남기셔요~.

그런데 typo를 워낙 대충 고쳐서 이거 패치를 뿌리기도 민망하지만 혹시라도(과연 typo사용자가 몇명이나 될까마는) 자기는 고치기 귀찮고 내가 고친거 대충 고쳐다 쓰고 싶은 사람을 위해서, 패치를 링크해둔다.

Posted in  | Tags , , ,  | 2 comments | no trackbacks