BLOG main image
분류 전체보기 (241)
Rails (67)
Ruby (34)
이야기 (40)
스토리큐 (61)
그 밖에.. (30)
C# (6)
드리밍 인 코드
The note of Legendre
작은아이의 생각
agiletalk's me2DAY
[rails] Growl4Rails
美소년 ㅇㅅㅇ씨의 一日
마사키군의 생각
ayukawa's me2DAY
작은아이의 생각
agiletalk's me2DAY
66,490 Visitors up to today!
Today 0 hit, Yesterday 3 hit

 SUBSCRIBE

2010/10/03 13:16

메소드 위임은 나에게 들어온 요청을 다른 녀석에게 대신 시키는 것이다. 

Ruby 에서는 Forwardable 모듈을 통해서 이 메소드 위임을 간단하게 구현할 수 있다.

 

다음과 같이 Config 클래스의 @config 변수에 hash로 데이타를 저장하고 있다고 생각해 보자.

  1. class Config 
  2.   def initialize(filename)
  3.     @filename = filename
  4.     File.open(@filename) { |file| @config = YAML.load(file) }
  5.   end
    end

 

하고 싶은 것은 다음과 같이 정보를 얻어오는 것이다. 마치 Config이 hash인 것처럼.

  1. config = Config.new "config.yml"
  2. p config[:name]

 

그러기 위해서 여러가지 방법을 사용할 수 있겠지만 그중 하나는 메소드를 위임시키는 것이다. 다음과 같이.

  1. require "forwardable"
  2. class Config 
  3.   extend Forwardable
  4.   def_delegators :@config, :[]
  5.   ...
  6. end

 

Forwardabe 에서 제공하는 def_delegators는 첫번째 파라미터가 accessor, 두번째 파라미터부터 위임할 메소드들이다.

 

끝.

 

참고로

Rails 의 ActiveSupport 에는 Module#delegate  라는 더 간결한 녀석이 있다.

이 글은 스프링노트에서 작성되었습니다.

2010/10/03 13:05

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 를 직접 만들 수 있다면 좋으련만. 뭔가 방법이 있겠지?

 

이 글은 스프링노트에서 작성되었습니다.

prev"" #1 #2 #3 #4 #5 ... #121 next