GEM 만들기

루비는 GEM이라는 재미난 형태의 패키지 기능을 제공한다. 자바의 jar와 비슷한 개념이기도 한데 특이한건 만드는 방법에 따라 Gem이 라이브러리로 쓰이기도 하고 실행가능한 어플리케이션이 되기도 한다. 만들기도 쉽고 사용하기도 쉽다.

애당초 루비 개발을 시작할때 디렉토리 구조를 Gem구조로 가져가는것이 속편하고 좋다.

1. gem을 위한 기본 소스 디렉토리 구성
“source root” —- bin
|– lib
|– ${gemname}.gemspec

  • bin에는 실행가능한 루비 소스 파일들을 배치한다. 실행 가능해야하니 rb파일 첫줄에 쉬뱅 라인을 넣는 것을 잊지 말자
    ( 리눅스 환경에서는 #!//usr/bin/env ruby 가 일반적이다. )
  • lib에는 라이브러리로 쓰이는 루비 소스 파일들을 배치한다. 대부분 개발 파일들이 이 디렉토리에 위치한다. (실행파일들 빼고~)
  • ${gemname}.gemspec , gem을 빌드할때 참조하는 스펙 파일. 요건 다음 항목에서 상세히…

2. gemspec 작성
gem build시 참고하는 spec파일, 만들어질 gem file들에 대한 정보를 포함하고 있다.
아래는 최근에 개발한 uasge_collector 라는 젬 파일의 usage_collector.gemspec 파일 내용
——- usage_collector.gemspec ————–
require ‘rubygems’

Gem::Specification.new do |s|
s.name = ‘cloulu_usage_collector’ # gem list 에 표기되는 gem name
s.version = ‘0.1.0’                           # gem version 표기
s.date = ‘2013-04-05’
s.summary = “CloudFoundry DEA Usage Collector” # gem list에 표기되는 gem 설명
s.description = “A Cloulu project’s Component developed to collect cpu usage of CloudFoundry’s DEA Apps”
s.authors = [“abh0518”]
s.email = ‘abh0518@gmail.com’
s.bindir = ‘bin’  # 실행 파일이 위치한 디렉토리
s.executables = [‘usage_collector’] # 실행 파일 목록, 배열 형식으로 나열
s.files = Dir.glob(“**/**/**”) # 젬에 포함되는 파일들, Dir.glob(“**/**/**”) 는 모든 파일들을 포함시켜 버린다.
s.homepage = ‘http://www.facebook.com/abh0518’
end
————————————————————–

3. gem 만들기
gem build에 2에서 작성한 spec파일 path를 파라메터로 넘겨준다.
>> gem build ${gemspecfile path”}

4. gem 설치
3이 완료되면 드더에 gem으로 만들어진 파일을 얻을 수 있다. 간단히 설치해보자
>> gem install “gem file name”

5. gem 설치 확인
>> gem list

6. 기타 gem 명령어들 (잊지 않기위해 일단 나열만 해놓음)

  • gem list # 설치된 젬 리스트 표시
  • gem environment # 루비 젬 설정 환경 표시
  • gem update ${gem name} # 지정한 젬 업데이트
  • gem update # 모든 젬 업데이트
  • gem update –system # Ruby Gem 자체를 업데이트
  • gem uninstall ${gem name} # 설치한 젬 제거

루비 Start

루비 관련 프로젝트를 하게 되면서 루비를 공부해야 할 일이 생겼다.

루비에 대한 설명은 여기저기 널려있으니 구지 여기선 하지 않아도 될것 같고

앞으로 공부하며 봐야 할 책들…

1. 루비 프로그래밍 언어 : 아마추어에서 프로까지
가정 먼저 본 루비 책이다. 가장 최근에 출판된 책이라 일단 사서 보았다. 루비에 대한 이런저런 많은 부분들을 다룬 책이다. 다만, 구성이 뭔가 밋밋하고 하고 좀 집중이 잘 안된달까? 책이 부실하다는 이야기는 아니니 오해하지 말길. 이책 한권이면 루비의 전반적인 모습을 다 알 수 있다. 그렇지만 이거 한권으로 루비 공부했다고 하기엔 좀 부족하다.

2. 레일즈와 함께하는 애자일 웹 개발
루비하면 역시 루비 온 레일즈! 라는 공식이 있어 일단 산 책. 하지만 지금 하고 있는 루비 관련 프로젝트가 루비 온 레일즈를 다루지 않는터라 당장 볼 일은 없을것 같다. 일단 평은 좋으니 일단 사놓은 책

3. 리팩토링 : 루비 에디션
전 회사(LG CNS) 선배님 이시자 그 유명한(!!!) “테스트 주도 개발 : 고품질 쾌속개발을 위한 TDD 실천법과 도구“의 저자이신 채수원님께서 선물해주신 책! 우리 모듈의 다음 주 스터디로 책으로 선정되어 다음주부터 눈에 불을 켜고 봐야한다. 파울러 횽님께서 쓰신 책이니 믿고 봅니다.

4. 루비 프로그래밍 언어
1번 책만으로는 아쉬워 보조할만한 책이 없을까 하다가 박용권님의 책상에서 발견한책. 도서상품권으로 중고가에 교환하려 했지만 딜은 실패하고 그냥 장기 대여로 내 책상에 보관중이다. 루비의 기본에 충실하려고 했는지 GEM, Database, Network 같은 것들에 대한 내용은 없는거 같다. 1과 혼용하며 보면 꽤 도움이 될거 같다.

쓰고나니 책장사 분위기……