RoR 은 기본적으로 Sqlite 를 Database로 제공해주고 있다. 나는 Oracle XE를 개발용으로 사용중이라서, 여기에 맞춰서 설정을 해보기로 했다. 개발 환경은 다음과 같다.

  • Ruby 1.9.3
  • RoR 3.2.8
  • Oracle XE 11g

RoR 설치

설치 관련해서는 이미 많은 글들이 존재하므로 다시 내가 뭘 다시 써야할 내용은 없을 것 같다. 간단하게 말해보면, 먼저 Ruby를 설치하고 (http://rubyinstaller.org/downloads/), 이때 Windows 에서 gem 설치를 위해서 DevKit도 같이 다운로드 해서 설치한다. 그리고 명령 프롬프트 상에서 다음을 실행해서 RoR을 설치한다.

gem install rails

DevKit설치는 다운받아 압축을 푼 디렉토리 내에서 다음을 수행한다.

ruby dk.rb init
ruby dk.rb install

(https://github.com/oneclick/rubyinstaller/wiki/Development-Kit 을 참조)

아니면, 간단하게 http://railsinstaller.org/ 에서 통합 패키지를 다운로드 받아서 설치할수도 있다.

오라클 관련 gem 설치

다음을 수행해서 필요한 gem 들을 설치한다.

gem install ruby-oci8
gem install activerecord-oracle_enhanced-adapter

제대로 설치됬는지 테스트를 해보자. 명령 프롬프트 상에서 다음을 수행해 본다. study/study 는 내 개발 환경에서의 id/pwd이다.

D:\MyRubyTest> ruby -r oci8 -e "OCI8.new('study', 'study', 'XE').exec('select sysdate from dual') do |r| puts  r.join(' | '); end"

2012-08-14 12:07:40 +0900

이런 결과가 나온다면 설치는 정상적으로 된 것이다.

프로젝트 Gemfile에 gem 추가

RoR 설치후 rails new xxx 등으로 실제 프로젝트를 생성했다고 가정해보자.

이제 중요한 사항은, 위에서 필요한 gem 들을 install 하긴 했지만, 프로젝트에서 이를 사용하려면, Gemfile 에 명시해줘야 한다는 것이다. 그렇지 않다면, gem을 설치하라는 에러메시지를 보게 될것이다 (그럼, 나처럼.. 이런..분명히 설치 했는데 또? 라며 당황하게 될것이고).

Gemfile 에 다음을 추가한다.

gem 'ruby-oci8'
gem 'activerecord-oracle_enhanced-adapter'

그리고, 사용하지 않을 기존 sqlite3 부분은 주석 처리한다.

# gem 'sqlite3'

bundle install 재 실행

이제 bundle install 을 다시 실행해서, Gemfile의 내용을 반영한다.

database.yml 수정

다음처럼 수정한다. 개발, 시험,배포의 설정이 구분될수도 있지만, 일단 동일한 설정으로 만들었다.

development:
    adapter: oracle_enhanced
    database: //localhost:1521/xe
    username: study
    password: study

test:
    adapter: oracle_enhanced
    database: //localhost:1521/xe
    username: study
    password: study

production:
    adapter: oracle_enhanced
    database: //localhost:1521/xe
    username: study
    password: study

db migrate 수행

다음을 수행해서 오류없이 종료되었다면, 이제 연동환경이 구성된 것이다.

rake db:migrate

실제로 테이블이 생성되는지 확인 해본다.