레일즈를 이용한 웹 개발 환경에서 다수의 루비 버젼을 이용할 수 있다는 것은 매우 유용하지만 어렵고 귀찮은 일이 아닐 수 없다.
커맨드라인 툴인 RVM를 이용하면 인터프리터로부터 gem에 이르기까지 다양한 루비환경을 쉽게 설치하여 관리할 수 있으며 개발할 수 있게 해준다.
루비와 루비젬이 설치되어 있는 개발환경에서 RVM을 이용하면 웹 프로젝트별로 다양한 젬들을 묶어서 관리할 수 있어 프로젝트별로 버젼이 다른 레일즈 프레임워크와 기타 플러인 젬들을 이용할 수 있어서 좋다.
별도의 젬을 생성하지 않으면 global 이라는 gemset 이 디폴트로 설정된다. 레일즈 3부터는 특정 프로젝트의 젬들을 Gemfile 이라는 파일에 등록한 후에 bundle install 이라는 커맨드라인 명령어를 통해서 젬을 설치해 준다. 바로 이때 global이라는 디폴트 gemset 에 설치되는 것이다.
그러나 이렇게 하면 다른 버젼의 레일즈나 기타 젬들을 이용하여 새로운 프로젝트를 개발할 경우에는 레일즈 버젼에 따른 기능제한 문제와 불필요한 젬들이 자원을 낭비하게 되는 결과를 초래하게 되는 것 같다.
그래서 프로젝트별로 gemset을 별도로 생성하여 사용하면 이러한 문제점을 해결할 수 있어 좋다.
현재의 등록된 gemset의 목록을 보기 위해서 다음의 명령를 실행해 본다.
$ rvm gemset list
gemsets for ruby-1.9.2-p180 (found in /Users/hyo/.rvm/gems/ruby-1.9.2-p180)
=> PROJECT_GEMSET global
현재 본인의 시스템에는 루비 1.9.2 패치 180번이 활성화되어 있고 이 루비버젼에 대한 gemsets의 목록이 보여진다. “=>” 표시가 현재 활성화되어 있는 gemset 을 가리킨다. current gemset을 “global”로 변경하기 위해서는 다음의 명령을 실행한다.
$ rvm gemset use global
Now using gemset 'global'
확인하기 위해서 다음의 명령을 실행한다.
$ rvm gemset list
gemsets for ruby-1.9.2-p180 (found in /Users/hyo/.rvm/gems/ruby-1.9.2-p180)
WORDSTORY_GEMSET
=> global
현재 본인의 시스템의 global 젬셋에는 다으의 젬들이 설치되어 있다.
$ gem list
*** LOCAL GEMS ***
bundler (1.0.12)
rake (0.8.7)
그럼, gemset을 새로이 생성하는 방법은 뭘까.
$ rvm gemset create ANYPROJECT_GEMSET
이상으로 RVM의 gemset 사용법에 대해서 간단하게 알아 보았다.
gemset 그 때 그 때마다 설정하는 것이 귀찮으면 다음과 같이 default ruby version을 설정할 때 gemset을 함께 설정해 주면 된다.
$ rvm use ruby-1.9.2-p180@PROJECT_GEMSET –default