Header

  1. View current page

    딥뿔이 자라나는 노트

Profile_image?t=1225424611&type=big
나를 바꾼 똑똑한 생활 습관, 스프링노트 - 여러분도 지금 시작해보세요!
38

007 다 받아주거라~ 레일스 라우팅

006 영리한 DataMapper, 게으른 프로그래머 / 절대 주관적인 루비 뉴스

 

지난 번에 어떤 세미나에서 레일스가 주목받는 가장 큰 이유 한가지로 '라우팅'을 꼽은 적이 있다. 라우팅은 레일스식 REST의 핵심이다. 라우터에서 온갖 지저분한 짓을 해주고, 도우미 함수까지 만들어주기 때문에 실제 애플리케이션 코드(컨틀로러, 뷰)는 우아할 수 있는 것이다.

 

보통의 레일스 라우팅은 관례를 따라 간결하다. 하지만 레일스 관례를 따르지 않는 경우라면 어떻게 할까? 여기 아주 적절한 예가 하나 있다. 요즘 화제가 되고 있는 오픈소셜을 지원한다고 해보자. 오픈소셜 규약에 맞춰 애플리케이션을 설계하기 보다는 자신의 스타일(주로 레일스 REST)를 고수하고, 두 개념간의 차이는 라우팅으로 채워주자는 것이 글의 요지다.

 

Google's OpenSocial with Ruby on Rails

 

이런 식이다.

 

  1. Mime::Type.register "application/x-opensocial", :opensocial

    map.opensocial_person '/feeds/people/:id', :controller => 'users', \
                                :action => 'show', :format => 'opensocial',\
                                :conditions => {:method => :get}

 

이렇게 하면 feeds/people/:id로 들어오는 GET 요청이 UsersController#show에 매칭된다. 레일스식으로 따지면 /users/:id.opensocial을 호출한 것과 같아졌다. 따라서 기존 코드에 새로운 표현 즉 show.opensocial.erb 파일만 만들어주면 만사 오케이다. 여기서 더 나가면 DRY 원칙에 따라 이 내용을 플러그인으로 만들고, 재사용하는 것도 가능하다. 레일스 라우팅의 장점 또 한가지는 확장이 쉽다는 점이다.

 

레일스 라우팅을 잘 활용한 좋은 예제다.  사실 나도 오늘 비슷한 코드를 작성했다. 외부에서 특정 URL에 기능을 주기를 원하는데, 이미 있는 기능에 view만 다른 형태인데 URL 스타일만 다르다. 그래서 routes.rb에 한줄만 추가해서 가볍게 처리해줬다. 라우팅 만세~

 

- 2007/11/16 02:00:01

 

History

Last edited on 11/20/2007 23:48 by deepblue

Comments (0)

You must log in to leave a comment. Please sign in.