메소드 위임은 나에게 들어온 요청을 다른 녀석에게 대신 시키는 것이다.
Ruby 에서는 Forwardable 모듈을 통해서 이 메소드 위임을 간단하게 구현할 수 있다.
다음과 같이 Config 클래스의 @config 변수에 hash로 데이타를 저장하고 있다고 생각해 보자.
- class Config
- def initialize(filename)
- @filename = filename
- File.open(@filename) { |file| @config = YAML.load(file) }
- end
end
하고 싶은 것은 다음과 같이 정보를 얻어오는 것이다. 마치 Config이 hash인 것처럼.
- config = Config.new "config.yml"
- p config[:name]
그러기 위해서 여러가지 방법을 사용할 수 있겠지만 그중 하나는 메소드를 위임시키는 것이다. 다음과 같이.
- require "forwardable"
- class Config
- extend Forwardable
- def_delegators :@config, :[]
- ...
- end
Forwardabe 에서 제공하는 def_delegators는 첫번째 파라미터가 accessor, 두번째 파라미터부터 위임할 메소드들이다.
끝.
참고로
Rails 의 ActiveSupport 에는 Module#delegate 라는 더 간결한 녀석이 있다.
이 글은 스프링노트에서 작성되었습니다.
'Rails' 카테고리의 다른 글
| [Ruby] method 위임(delegate) 하기 (0) | 2010/10/03 |
|---|---|
| [Rails] 맥 사전에 Ruby Doc 추가하기 (0) | 2010/10/03 |
| [rails] will_paginaton 의 paginator의 URL을 변경하기 (0) | 2009/08/20 |
| [Rails] 이전 페이지로 이동하기(back) (0) | 2009/08/14 |
| [Rails] jGrowl을 사용해서 flash message 보여주기 (2) | 2009/06/16 |
| [Rails] authlogic에 I18n 적용하기 (0) | 2009/06/11 |
Ruby를 가지고 놀다보면 class, method에 대해 궁금한 일이 자주 생긴다. 모든 것을 기억할 수는 없는 일이니. 그럴 필요도 없고.
Ruby는 rdoc, ri 처럼 훌륭한 도움말 시스템을 가지고 있다. 도움말도 충실하게 잘 작성되어 있다.
API doc 사이트는 Ruby API를 손쉽게 찾을 수 있는 사이트다. 좋지만 약간 불편하다.
윈도우에서는 직접 chm 파일을 생성해서 사용할 수 있다. Rails CHM document 생성하기
맥에서는 맥 사전에 이 도움말을 추가할 수 있다!
http://www.stjhimy.com/posts/15-rails-3-ruby-and-jquery-documentation-into-mac-os-dictionary
사이트에서 jquery, rails 3, ruby documentation 을 다운받아서 ~/Library/Dictionaries 폴더에 넣어 놓기만 하면 된다.
이 document 를 직접 만들 수 있다면 좋으련만. 뭔가 방법이 있겠지?
이 글은 스프링노트에서 작성되었습니다.
'Rails' 카테고리의 다른 글
| [Ruby] method 위임(delegate) 하기 (0) | 2010/10/03 |
|---|---|
| [Rails] 맥 사전에 Ruby Doc 추가하기 (0) | 2010/10/03 |
| [rails] will_paginaton 의 paginator의 URL을 변경하기 (0) | 2009/08/20 |
| [Rails] 이전 페이지로 이동하기(back) (0) | 2009/08/14 |
| [Rails] jGrowl을 사용해서 flash message 보여주기 (2) | 2009/06/16 |
| [Rails] authlogic에 I18n 적용하기 (0) | 2009/06/11 |