루비 Gem 빌드하기 – 2015 업데이트

특히나 다양한 자바스크립트 라이브러리를 레일스 프로젝트의 assets pipeline으로 사용하고자 할 경우, 레일스 프로젝트에서 쉽게 추가할 수 있도록 루비 젬으로 빌드하는 과정을 소개한다.

계속 “루비 Gem 빌드하기 – 2015 업데이트” 읽기

한 동안 뜸했었지…

사랑과 평화의 “한동안 뜸했었지…”로 시작하는 노래가사가 생각이 납니다.

그 동안, 참 많은 일이 개인적으로 있었습니다.

웹개발 프레임워크인 루비온레일스를 접한지도 언 4년이 되어가지만, 정작 제대로 레일스를 파기 시작한 것은 재작년 말쯤부터입니다. 흑, 벌써 일년이 훌쩍 넘었네요.

그 동안 프로젝트도 하나 완성해서 베타 테스트 중이고, 작게는 레일스 스타트업을 위한 오프라인 강좌도 격주로 진행하고 있습니다. 레일스의 기본에 충실하는 것이 무엇보다 중요하다고 판단하여 지인의 도움으로 작년말부터 작은 사무실을 임대해서 레일스 가이드의 내용을 중심으로 무료 강좌를 진행하고 있습니다. 이제까지 9번의 오프라인 강좌를 진행했고 강의내용은 스크린캐스트로 녹화하여 웹에 서비스도 하고 있습니다. 앞으로 3-4차례 더 강의를 진행하면 레일스 가이드의 기본 MVC 관련 내용을 끝마치게 될 것 같습니다. 계속 “한 동안 뜸했었지…” 읽기

레일스 엔진 젬 시작하기

By Ryan Cook

June 23rd, 2011

레일스3가 릴리스된 이후 개발자들은 루비젬으로 패키징할 수 있는 새롭고 깔끔한 방식으로 레일스 엔진을 작성해 왔습니다. 레일스 엔진이란 패키지 형태의 하나의 어플리케이으로 다른 어플리케이션 안에서 실행되거나 마운트될 수 있습니다. 하나의 엔진은 자체 모델, 뷰, 컨트롤러, 제너레이터, 그리고 웹으로 공개서비스되는 정적 페이지 파일을 가질 수 있습니다. 계속 “레일스 엔진 젬 시작하기” 읽기

How to downgrade Rubygem to its dedicated version, on using RVM.

gem update –system 하여 루비젬을 업그레이드 했다가 아래와 같은 수많은 warnings을 보게 된다.

HyoAir:[Projects]$ gem update --system
NOTE: Gem::Specification#default_executable= is deprecated with no replacement. It will be removed on or after 2011-10-01.
Gem::Specification#default_executable= called from /Users/hyo/.rvm/gems/ruby-1.9.2-p180@global/specifications/bundler-1.0.12.gemspec:10.
NOTE: Gem::Specification#default_executable= is deprecated with no replacement. It will be removed on or after 2011-10-01.
Gem::Specification#default_executable= called from /Users/hyo/.rvm/gems/ruby-1.9.2-p180@global/specifications/rake-0.8.7.gemspec:10.
NOTE: Gem::Specification#default_executable= is deprecated with no replacement. It will be removed on or after 2011-10-01.
Gem::Specification#default_executable= called from /Users/hyo/.rvm/gems/ruby-1.9.2-p180@global/specifications/bundler-1.0.12.gemspec:10.
NOTE: Gem::Specification#default_executable= is deprecated with no replacement. It will be removed on or after 2011-10-01.
Gem::Specification#default_executable= called from /Users/hyo/.rvm/gems/ruby-1.9.2-p180@global/specifications/rake-0.8.7.gemspec:10.
Latest version currently installed. Aborting.
HyoAir:[Projects]$ gem -v
NOTE: Gem::Specification#default_executable= is deprecated with no replacement. It will be removed on or after 2011-10-01.
Gem::Specification#default_executable= called from /Users/hyo/.rvm/gems/ruby-1.9.2-p180@global/specifications/bundler-1.0.12.gemspec:10.
NOTE: Gem::Specification#default_executable= is deprecated with no replacement. It will be removed on or after 2011-10-01.
Gem::Specification#default_executable= called from /Users/hyo/.rvm/gems/ruby-1.9.2-p180@global/specifications/rake-0.8.7.gemspec:10.
1.8.3

이것은 RVM을 사용할 때 버젼별로 전용 rubygem 버젼이 있는데 생뚱맞게 gem update –system 으로 젬버젼을 업그레이드하여 불평을 하는 것이다.
이럴 때는 전용버젼으로 다운그레이드해야 하는데, 아래와 같은 명령어를 실행하면 전용 젬버젼으로 복원된다.

rvm rubygems current

참조 : https://github.com/rspec/rspec-core/issues/345

RVM (Ruby Version Manager)

RVM의 Gemset을 이용하여 효율적인 레일즈 웹프로젝트를 개발하는 방법을 소개한다.

레일즈를 이용한 웹 개발 환경에서 다수의 루비 버젼을 이용할 수 있다는 것은 매우 유용하지만 어렵고 귀찮은 일이 아닐 수 없다.
커맨드라인 툴인 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 사용법에 대해서 간단하게 알아 보았다.