refeのgemを作成してみました。
gemの勉強をかねて、refe-0.8.0のgemを作成してみました。
ゆくゆくはRubyForgeにアップロードしてみたいと思っています。と、それには青木さんの許可を得ないと…
以下はobsoleteです。id:ha-tan:20051020:1129759786を参照ください。
とりあえずgemの作成に必要なpatchを以下に添付します。
ファイル: refe-0.8.0_gem.patch
diff -ruN refe-0.8.0.orig/lib/refe/config.rb refe-0.8.0/lib/refe/config.rb --- refe-0.8.0.orig/lib/refe/config.rb 1970-01-01 09:00:00.000000000 +0900 +++ refe-0.8.0/lib/refe/config.rb 2005-10-20 06:08:15.000000000 +0900 @@ -0,0 +1,24 @@ +require 'refe/info' + +module ReFe + + refepaths = [] + Gem.path.each do |gempath| + specpath = "#{gempath}/specifications/*.gemspec" + paths = Dir.glob(specpath).collect do |specfile| + spec = eval(File.read(specfile)) + if spec.name == 'refe' and spec.version.to_s == Version + "#{gempath}/gems/#{spec.full_name}/data/refe" + else + nil + end + end.compact + refepaths.concat paths + end + + if refepaths.size > 0 + REFE_DATA_DIR = refepaths[0] + else + REFE_DATA_DIR = '/usr/local/share/refe' + end +end diff -ruN refe-0.8.0.orig/misc/gem.sh refe-0.8.0/misc/gem.sh --- refe-0.8.0.orig/misc/gem.sh 1970-01-01 09:00:00.000000000 +0900 +++ refe-0.8.0/misc/gem.sh 2005-10-20 06:11:26.000000000 +0900 @@ -0,0 +1,7 @@ +#!/bin/sh + +version=0.8.0 + +gem build refe.gemspec \ + && sudo gem uninstall -x refe \ + && sudo gem install -t refe-$version.gem diff -ruN refe-0.8.0.orig/refe.gemspec refe-0.8.0/refe.gemspec --- refe-0.8.0.orig/refe.gemspec 1970-01-01 09:00:00.000000000 +0900 +++ refe-0.8.0/refe.gemspec 2005-10-20 06:10:37.000000000 +0900 @@ -0,0 +1,26 @@ +# -*- ruby -*- + +Gem::Specification.new do |spec| + spec.name = 'refe' + spec.version = '0.8.0' + spec.summary = 'Yet another ruby reference manual browser.' + spec.authors = ['Minero Aoki', 'TANAKA Shin-ya'] + spec.email = ['zstanaka@archer.livedoor.com'] + spec.homepage = 'http://i.loveruby.net/ja/prog/refe.html' + + spec.executable = 'refe' + + files = Dir.glob('{bin,data,lib,misc,test}/**/*') + files.push 'COPYING' + files.push 'ChangeLog' + files.push 'NEWS' + files.push 'README.en' + files.push 'README.ja' + files.push 'TODO' + files.push 'test.rb' + files.delete('misc/dist.sh') + spec.files = files + + spec.test_file = 'test.rb' +end + diff -ruN refe-0.8.0.orig/test.rb refe-0.8.0/test.rb --- refe-0.8.0.orig/test.rb 2003-10-17 22:24:32.000000000 +0900 +++ refe-0.8.0/test.rb 2005-10-20 05:10:54.000000000 +0900 @@ -15,7 +15,13 @@ unless /Test::Unit/ === RUNIT::CUI::TestRunner.superclass.name RUNIT::CUI::TestRunner.quiet_mode = true end - RUNIT::CUI::TestRunner.new.run load_test_suite(ARGV) + if ARGV.include?('-t') or ARGV.include?('--test') + # running under gem. + RUNIT::CUI::TestRunner.new.run load_test_suite([]) + else + # normal command line. + RUNIT::CUI::TestRunner.new.run load_test_suite(ARGV) + end end
gem作成手順は次の通りです。
$ wget http://i.loveruby.net/archive/refe/refe-0.8.0-withdocsrc.tar.gz $ tar zxvf refe-0.8.0-withdocsrc.tar.gz $ cd refe-0.8.0 $ patch -p1 < /path/to/refe-0.8.0_gem.patch $ gem build refe.gemspec $ sudo gem install refe-0.8.0.gem
僕は、Rubyでマニュアルを読むのにrefeを愛用しています。補完機能が大変よくできていて、クラス名とかメソッド名を全部入力しなくてもよいところが気に入っています。それから日本語のマニュアルというのもポイント高いです(riは英語)。