RubyOnRails에서 Oracle 사용하기

개인적으로 RubyOnRails(이하 ROR)를 배우면서 ActiveRecord(이하 AR)에 많은 관심을 가지고 보고 있습니다. 웹개발에서만이 아니라 단독으로 사용 할 때도 상당한 효과를 볼 수 있으리라 생각합니다. 예를 들어 코코아Ruby 기반의 맥 어플리케이션을 만든다고 할 때 사용자 데이터를 로컬의 sqlite3에 저장하고 CRUD 작업을 AR로 한다면 상당한 효과를 볼 수 있겠죠. 실제로 배치 작업을 위해 AR을 조금씩 사용하고 있습니다.

서론은 여기서 그만하고 오늘의 이야기는 AR에서 Oracle 사용하기 입니다. AR은 mysql, sqlite3 같은 오픈소스로 만들어지는 디비에 대한 지원은 잘 되어있습니다. 관련 gem과 라이브러리들을 설치만 하면 되니깐요. 윈도우즈에서는 해당 디비 클라이언트의 라이브러리를 찾아 설치하는 과정이 번거로워서 좀 불편할지도 모르겠네요. (사실 이런 점에서 개발자들에게 최고의 플랫폼은 리눅스라고 생각하지만 많은 맥 사용자들은 어떻게 반응하실지 모르겠군요.)

  1. oracle을 사용하기 위한 네이티브 클라이언트 라이브러리가 필요합니다. oracle instant client이나 oracle database Express을 설치하면 됩니다. 제 경우에는 oracle에서 debian용 리파지토리 저장소를 제공해서 저장소를 통해 express client를 설치했습니다.
  2. 환경 변수에 ORACLE_HOME을 설정합니다. 우분투나 데비안의 경우 다음과 같은 위치가 되겠습니다.
    /usr/lib/oracle/xe/app/oracle/product/10.2.0/client

    다음에 설치해야 할 ruby-oci8의 설치 파일이 ORACLE_HOME 변수를 확인한 후 하위 디렉토리 중 lib을 뒤지는 것 같습니다.

  3. oracle client의 ruby 인터페이스인 ruby-oci8을 설치합니다. 압축파일에 함께 있는 README 파일을 읽어보세요. 일반적인 ruby 라이브러리와 동일합니다.
  4. 마지막으로 AR이 ruby-oci8을 사용하기 위해 oracle 아답타가 필요합니다. AR이 직접적으로 지원하지 않는 상용 디비(db2, oracle, sql-server 등)는 아답타를 통해 구현이 됩니다. 현재 구글에게 물어보면 gem 리파지토리에서 제공된다고 나오지만 gem install 해보면 없다고 나옵니다. 직접 svn 에서 체크아웃해서 rake로 빌드하는 수 밖에 없습니다.
    svn co http://svn.rubyonrails.org/rails/adapters/oracle/
    cd oracle
    rake gem

    rake를 통해 gem을 빌드하면 pkg 디렉토리 안에 gem 파일이 생성됩니다. 저도 gem을 만들어보기는 처음이네요.

이상으로 AR이 oracle을 사용 할 수 있는 환경을 만드는 것이 끝났습니다. 하지만 이 아답타의 소소를 2007년 10월 이후로 커밋이 없는 상태입니다. gem 저장소에 언제 정식으로 올라올지 궁금하네요. 이런 것은 차라리 벤더에서 직접 지원해주면 좋겠는데요. 더 좋은 아답타나 편리한 방법을 알고 계시면 알려주세요.

Advertisements