RubyGems 사용기.
Posted 2007. 2. 17. 23:40오늘 루비로 회사 소스 저장소를 백업하는데 쓸 간단한 스크립트를 만들었습니다. 루비 파일 한 개로 된 간단한 프로그램이라 패키징 할 필요도 없지만 루비용 패키징 도구인 RubyGems를 사용해 볼 생각에 gem 파일로 만들어보았습니다. 리눅스 프로그램 패키징에 사용되는 RPM이나 DEB의 스펙 파일과 유사할 것이라 생각했는데, RubyGems은 스펙 파일도 실행 가능한 루비 스크립트더군요. 스펙 자체를 실행할 수 있는 모델이라는 게 재미있었습니다. 다음은 제가 작성한 sysadmin의 스펙 파일입니다.
패키지에 포함될 파일을 files 속성에 정의해주는데, Dir.glob 메쏘드를 사용해 bin 이후 모든 파일을 집어 넣습니다. 또한 bindir 속성과 executables 속성을 지정해주면, 여기에 지정된 파일은 설치 시에 자동으로 /usr/bin 디렉토리에 복사해줘서 실행 가능하게 만들어 주더군요. add_dependency를 이용해서 간단하게 필요한 패키지의 의존성을 표시해줄 수 있고요. 위 스크립트를 실행시키면 Gem::Builder.new(spec).build 부분에서 gem 파일을 생성해 줍니다.
require 'rubygems'
spec = Gem::Specification.new do |s|
s.name = 'sysadmin'
s.version = '0.0.1'
s.platform = Gem::Platform::RUBY
s.summary = "sysadmin is a collection of Linux server administration tools."
s.files = Dir.glob("bin/**/*").delete_if {|item| item.include?(".svn")}
s.bindir = 'bin'
s.executables = 'reposbackup'
s.require_path = '.'
s.add_dependency 'net-sftp', '>= 1.1.0'
s.add_dependency 'progressbar', '>= 0.0.3'
s.has_rdoc=false
s.author = "Kwang Yul Seo"
s.email = "kwangyul.seo@gmail.com"
s.homepage = "http://skyul.tistory.com"
end
if $0==__FILE__
Gem::manage_gems
Gem::Builder.new(spec).build
end
spec = Gem::Specification.new do |s|
s.name = 'sysadmin'
s.version = '0.0.1'
s.platform = Gem::Platform::RUBY
s.summary = "sysadmin is a collection of Linux server administration tools."
s.files = Dir.glob("bin/**/*").delete_if {|item| item.include?(".svn")}
s.bindir = 'bin'
s.executables = 'reposbackup'
s.require_path = '.'
s.add_dependency 'net-sftp', '>= 1.1.0'
s.add_dependency 'progressbar', '>= 0.0.3'
s.has_rdoc=false
s.author = "Kwang Yul Seo"
s.email = "kwangyul.seo@gmail.com"
s.homepage = "http://skyul.tistory.com"
end
if $0==__FILE__
Gem::manage_gems
Gem::Builder.new(spec).build
end
패키지에 포함될 파일을 files 속성에 정의해주는데, Dir.glob 메쏘드를 사용해 bin 이후 모든 파일을 집어 넣습니다. 또한 bindir 속성과 executables 속성을 지정해주면, 여기에 지정된 파일은 설치 시에 자동으로 /usr/bin 디렉토리에 복사해줘서 실행 가능하게 만들어 주더군요. add_dependency를 이용해서 간단하게 필요한 패키지의 의존성을 표시해줄 수 있고요. 위 스크립트를 실행시키면 Gem::Builder.new(spec).build 부분에서 gem 파일을 생성해 줍니다.
- Filed under : 카테고리 없음