레일스 1.2 발표

Posted by 大山 Fri, 19 Jan 2007 05:59:00 GMT

레일스 1.2가 오늘 공식적으로 발표되었습니다. 기존에 레일스를 설치하셨던 분들은 명령 프롬프트 창에 다음과 같이 입력하여 업그레이드하실 수 있습니다.

gem update rails --include-dependencies
 

개선된 내용이 많지만, 우리 한국의 개발자들에게 가장 중요한 부분은 보다 체계적인 유니코드 지원이 아닐까 싶습니다. 이제는 예전처럼 직접 $KCODE의 값을 수정하거나 HTTP 헤더 정보를 변경해주지 않아도 괜찮습니다. (database.yml 파일에서의 'encoding: utf8' 옵션은 여전히 필요합니다.)

문자열 클래스에는 'chars' 프록시(Proxy) 기능이 추가되었는데, 이를 통하면 문자열의 메소드가 유니코드 문자를 옳바르게 처리해줍니다. 이전에는 루비 문자열의 기본 메소드가 유니코드를 제대로 처리하지 못하는 문제가 있었습니다.

>> puts "한글".slice(0, 1)
?
 

위에서 사용된 'slice' 메소드는 문자열의 일부를 잘라주는 메소드입니다. 문제는 루비의 문자열이 바이트열로 구현되어 있다는 점입니다. 유니코드 인코딩인 UTF8은 한글 글자 하나에 3바이트를 사용하고 있으므로, 'slice(0, 1)'은 "한" 글자를 이루는 3바이트 중 첫번째 바이트만을 리턴합니다. (이 바이트는 출력 가능한 문자가 아니기 때문에 위에서 ?로 표시되고 있습니다.) 레일스 1.2에서는 다음과 같은 코드가 가능합니다.

>> puts "한글".chars.slice(0, 1)
"한"
 

보다시피 'slice(0, 1)' 메소드가 "한글" 문자열의 첫번째 글자를 옳바르게 리턴하는 것을 알 수 있습니다. 다음은 문자열의 길이를 구하는 예를 보여주고 있습니다.

>> puts "한글".length
6
>> puts "한글".chars.length
2
 

위에서 "한글".length는 문자열의 바이트수를 리턴하기 때문에 6이 리턴되지만, "한글".chars.length는 글자수를 리턴하므로 2가 리턴되는 것을 알 수 있습니다. 이처럼 유니코드 문자열을 처리하려면, 문자열 메소드를 호출할때 사이에 'chars'를 삽입해주면 됩니다.

이외에도 세부적으로 변경된 부분이 여럿 있습니다만, 준비하고 있는 레일스 책에 모두 반영하도록 하겠습니다. :)

Posted in  | Tags  | 2 comments | no trackbacks

Comments

  1. 1.
    passer by said 1 day later:

    thanx for the information :)


  2. 2.
    ikspres said 4 days later:

    대산님, 레일스 책 기대하고 있습니다. 1.2내용 꽉꽉 채워서 부탁드려요..그리고 루비세미나에서 명확한 설명 잘 들었습니다.


Trackbacks

Use the following link to trackback from your own site:
http://beyond.daesan.com/articles/trackback/15508

Comments are disabled