ruby 2.0.0에서 iconv 사용 불가

2013-10-24   //   alexken작성   //   기술  //  1 Comment

이전에 만들어 두었던 나만을 위한 EPG가 동작을 하고 있지 않았다.

/System/Library/Frameworks/Ruby.framework/... /kernel_require.rb:45:in `require'
    : cannot load such file -- iconv (LoadError)

이유를 살펴 보니, 날마다 EPG 데이터에서 HTML페이지를 생성하는 ruby 코드 내에서 사용한 iconv 때문에 requre 문에서 부터 오류가 발생했다. 문제를 추적해 가보니, 근원은 MacOSX를 “Mavericks”로 업그레이드 해서 발생한 문제였다.

  • MacOSX 10.8(“Mountain Lion”)에 기본으로 설치된 ruby 버전은 1.8.7이었다.
  • 반면 MacOSX 10.9(“Mavericks”)에서 2.0.0으로 판올림 되었다.
  • 그 과정에서 iconv가 deprecated 되었다가 1.9.3부터는 아예 빠져 버렸다고 한다. 해결책은 iconv를 추가로 까는 방법도 있겠지만, deprecated한 취지 대로, string의 encode로 바꾸었다.

기존 iconv 사용 코드

requrie 'iconv'
conv = Iconv.new('UTF-8//IGNORE','KS_C_5601-1987')
utf8_str = conv.iconv(ksc5601_str)

string.encode로 변경한 새 코드

utf8_str = ksc5601_str.encode("UTF-8", "KS_C_5601-1987")