본문 바로가기
old/Web Application 개발 이야기

ruby on rails 3.x.x 를 위한 ruby및 bundle의 버전 설정

by 열야 2011. 5. 22.
1. ruby 설치
ruby는 1.8.7 또는 1.9.x버전이 필요하다.
그런데, 1.9.x버전으로 설치해보았더니, rake등의 다른 gem들에서 수많은 warning이 발생하였다. 결과적으로 아직 다른 gem들이 1.9.x에 알맞게 update되지 않은 모양이다.
그러므로, 안정적인 개발을 위해서는 1.8.7버전으로 일단 개발을 진행해야 할 것을 권한다.

ruby버전의 다운르도는 다음에서 한다.
http://www.ruby-lang.org/ko/

CentOs5.5에서는 yum이 1.8.5버전만을 지원하므로 소스 컴파일을 해서 설치해야만 한다.

2. gem설치
gem은 최신으로 설치를 한다.  1.8.0및 1.8.1은 rspec과 spork 등의 gem에서 error가 발생할 수 있으니, 반디시 1.8.3이상으로 하는 것을 권한다.

3. rails설치
rails는 최신은 3.0.7과 3.1.x rc1버전이 있다. 가장 큰 차이점은 기본 Ajax 모듈인데, rails 3.0.7버전 이전에는 기본 Ajax버전이 prototype을 사용하였다. 그런데, 3.1.x부터는 JQuery를 사용하는 것으로 되어 있다. 물론, 임의로 이를 변경할 수 있지만, 왠지 디펄트로 지원되면, 좀더 다양한 helper들이 지원될 것 같은 기분이다.
실험해본 결과 3.1.x는 아직 사용하기에는 시기 상조인 것 같다. 다른 gem들과의 호환성이 매우 좋지 않아서 시험해 볼 염두를 내지 못했다.
결과적으로 rails 3를 선행 학습할 때는 3.0.7로 학습 하고, 실제 개발은 3.1.x로 진행하면서 jQuery를 사용하는 것이 좋을 것 같다는 결론에 이르렀다.

4. mysql을 사용하고 싶다면,
이상하게도 기본 DB를 sqlite를 채택하였다. 그런데, 약간의 옵션을 사용하면 쉽게 mysql로 변경할 수 있는데, 이때, 생각없이 그냥 사용한다면, 수많은 에러들을 볼 것이다.

우선 rails로 프로젝트를 생성한다.

$ rails new new_app --database=mysql

이와 같이 database옵션을 주면 기본적인 database adaptor를 mysql2로 선택한다. 그러나, mysql2의 gem최신 버전은 0.3.2이다. 하지만 mysql2의 0.3.x버전은 rails 3.1.x에 맞게 설계되어 있으며, rails 3.0.x버전에서는 문제를 일으킨다. 그러므로 강제로 mysql2 v0.2.7을 설치한다.

$ sudo gem install mysql2 --version=0.2.7

5. rake 버전 확인
rake는 최근 0.9.0으로 버전업이 되었다. 이때문에 rails 스크립트와 에러를 발생시키고 있다.
이를 해결하기 위해서 기존 버전인 rake v0.8.7을 사용한다. 문제 없이 잘돔을 확인할 수 있다.

6. 기타 gem
기타 다른 gem에서느 버전 문제가 있는 녀석은 runtime environment 저장 서버인 spork인데 이 녀석을 설치하면, rspec을 이용하여 테스트할 때와 autotest로 테스트할 때 엄청난 속도를 경험할 수 있다. 즉, 큰 프로젝트를 적은 인원으로 개발할 때는 필수적인 gem이 되겠습니다. 고갱님~
그런데 문제는 0.9.0.rc7이전 버전에서는 rails v3.x와 궁합이 맞지 않는 다는 것이다. 이 역시 강제로 0.9.7로 설치를 해야 한다.

결과적으로 다음과 같이 Gemfile을 설정해야만, rails v3.0.7에서 모든 것이 아구가 맞게 잘 동작한다.


Gemfile
----------------
source 'http://rubygems.org'

gem 'rails', '3.0.7'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'mysql2', '0.2.7'
gem 'rake', '0.8.7'

group :development do
  gem 'rspec-rails', '2.5.0'
end

group :test do
  gem 'rspec', '2.5.0'
  gem 'webrat', '0.7.1'
  gem 'spork', '0.9.0.rc7'
end

이러한 사실을 알아내기 위해서 진짜 짜증나는 삽질을 했다. 구글링도 조낸 했다. 의외로 ruby on rails v3.x.x에 대한 자료가 턱없이 부족하다는 것이 너무 아쉽다.