간만의 포스팅입니다.

자신이 만든 ruby library를 gem으로 만들고 공개배포할 계획이 있다면 rubygems를 이용할 수 있습니다.
그러면 누구나 gem 명령어를 이용하여 내가 만든 gem을 설치할 수 있지요. 그럼 gem을 등록하고, 삭제하는 방법과 prerelease 버전으로 등록하는 방법을 알아봅니다.

gem 생성하기

NetBeans에서 ruby project를 만들면 기본 Rakefile 템플릿을 만들어줍니다만, 없으면 만들면 되지요. ^^
대충 아래처럼 프로젝트 루트에 Rakefile을 생성합니다. 설정 세부 사항은 Gem::Specification Reference 를 참조하시면 됩니다.

require 'rubygems'
require 'rake'
require 'rake/clean'
require 'rake/gempackagetask'
require 'rake/rdoctask'

spec = Gem::Specification.new do |s|
  s.name = 'sample' # gem name
  s.version = '1.0.0' # version
  s.extra_rdoc_files = ['README', 'LICENSE']
  s.summary = 'simple description'
  s.description = "description'
  s.author = 'my name'
  s.email = 'abc@gmail.com'
  s.files = %w(LICENSE README) + Dir.glob("{lib}/**/*")
  s.require_path = "lib"
end

Rake::GemPackageTask.new(spec) do |p|
  p.gem_spec = spec
  p.need_tar = true
  p.need_zip = true
end

이제 shell에서 ‘rake gem’ 이라고 타이핑하시면 gem파일이 ‘sample-1.0.0.gem’이라는 이름으로 생성됩니다.

rubygems.org 에 등록하기

rubygems.org에 등록하기 위해서는 rubygems.org에 계정이 있어야합니다. 계정을 만드셨다면 이제 shell에서 gem push 명령으로 간단하게 등록하실 수 있습니다.

> gem push sample-1.0.0.gem
email address:
password:

이메일 주소와 비밀번호를 물어보는데 rubygems에 가입할 때 사용했던 이메일과 비밀번호를 입력하면 됩니다. 수 분뒤에는 rubygems 에서도 등록된 나의 gem을 확인할 수 있고 shell에서  ’gem list -r’ 명령으로도 확인해볼 수 있답니다.

rubygems.org에서 gem 삭제하기

rubygems.org의 dashboard를 아무리 뒤져봐도, gem help를 아무리 뒤져봐도 등록했던 gem을 삭제하는 방법은 보이지 않습니다. 구글링을 해보니 yank라는게 있더군요. gem 1.3.5 버전 이후부터 가능하니 gem update를 하시고 gemcutter라는 gem을 설치하면 gem을 삭제할 수 있습니다.

> gem update --system # gem 자체 업데이트
> gem install gemcutter # gemcutter 설치
> gem yank -h # gem yank help
> gem yank sample -v 1.0.0

잘못 등록한 gem은 이런 방법으로 삭제하시면 됩니다. (버전 단위로만 삭제할 수 있습니다.)

prerelease 버전으로 gem 올리기

언제부터인가 gem install 시에 –pre 옵션이 생겼지요. 개발 중인 버전을 미리 배포할 경우 일반적인 gem list, install 명령으로는 prerelease 버전의 정보를 보거나 설치할 수 없습니다. ‘–pre‘ 옵션을 줄 때만 설치하거나 정보를 확인할 수 있지요.

prerelease 버전으로 gem을 등록하는 방법을 한참 찾아헤맸으나 관련 문서를 찾지 못했답니다. 그러나 어느 뉴스그룹에 올라온 게 있더군요. 그냥 버전을 붙일때 숫자가 아닌 문자를 쓰면 된답니다. 즉, ’1.0.0′ 대신 ’1.0.beta1′ 이런 식으로 패치버전 부분에 숫자대신 문자를 사용해서 gem을 만들고 등록하면 됩니다.

spec = Gem::Specification.new do |s|
  s.name = 'sample'
  s.version = '1.1.beta1' # 이렇게 써서 gem을 만들면 prerelease 버전이 됨.
  ...
end
, , ,
Trackback

no comment untill now

Add your comment now

WordPress SEO