jeweler でらくらく rubygems 作成(github編)
jeweler とは
rubygems 作成支援ツールとでも言えば良いのでしょうか。
こいつ自体は gem install jeweler でインストールできます。
くわしくは Route 477 - gemspecの作り方がわからない?ならばjewelerだ
前提条件
このエントリを読む人は以下を満たしていると良いかもしれません
- github にアカウントを持っている(もってない人はさっさと取ってきなさい)
- jeweler がインストールされている
- rubygems でインストールさせるライブラリ等を作りたい
github 用の プロジェクトのスケルトンコードの作成
まだ github のプロジェクトは作っていないので、jeweler に作ってもらいましょう。
jeweler のオプションに --create-repo オプションを追加すると、スケルトンコードの他に github 上のリポジトリも一緒に作成してくれます。
ちなみに、下記のプロジェクトの場合、rspec のひな形も作ってもらうため、 --rspec のオプションも付けています。runit でも可能なので、jeweler のヘルプを確認してみると良いです。
sugamasao% jeweler --rspec --create-repo atnd4r create .gitignore create Rakefile create LICENSE create README.rdoc create .document create lib create lib/atnd4r.rb create spec create spec/spec_helper.rb create spec/atnd4r_spec.rb Jeweler has prepared your gem in atnd4r Enter passphrase for key '/Users/sugamasao/.ssh/github_id_rsa': Jeweler has pushed your repo to http://github.com/sugamasao/atnd4r Jeweler has enabled gem building for your repo
結果の確認
ローカルには atnd4r ができています。
sugamasao% ls -l total 0 drwxr-xr-x 10 sugamasao sugamasao 340 7 20 19:24 atnd4r drwxr-xr-x 13 sugamasao sugamasao 442 7 6 02:10 saag
atnd4r の中身は以下の通り。spec ディレクトリもありますね。
sugamasao% ls -l atnd4r total 24 -rw-r--r-- 1 sugamasao sugamasao 1053 7 20 19:24 LICENSE -rw-r--r-- 1 sugamasao sugamasao 103 7 20 19:24 README.rdoc -rw-r--r-- 1 sugamasao sugamasao 1188 7 20 19:24 Rakefile drwxr-xr-x 3 sugamasao sugamasao 102 7 20 19:24 lib drwxr-xr-x 4 sugamasao sugamasao 136 7 20 19:24 spec
gihub のほうも確認してみると、既に作成されている
http://github.com/sugamasao/atnd4r/tree/master
追記
この github のプロジェクトページを確認した際に、以下をやっておかないと、gem の自動生成が効きません!
上記 github ページから admin ページへ行き、
RubyGem:
となっている項目にチェックを入れてください*1。
VERSIONファイルを作る
デフォルトではバージョンファイルが存在しないので、作りましょう。
atnd4r のディレクトリに移動して、 rake -hrake -T*2 で rake タスクを確認してみる。
sugamasao% rake -T rake build # Build gem rake clobber_rcov # Remove rcov products for rcov rake clobber_rdoc # Remove rdoc products rake gemspec # Generate and validates gemspec rake gemspec:generate # Generates the gemspec, using version from VERSION rake gemspec:validate # Validates the gemspec rake install # Install gem using sudo rake rcov # Run specs using RCov rake rdoc # Build the rdoc HTML Files rake release # Release the current version. rake rerdoc # Force a rebuild of the RDOC files rake rubyforge:release:gem # Release the current gem version to RubyForge. rake rubyforge:setup # Setup a rubyforge project for this gem rake spec # Run specs rake version # Displays the current version rake version:bump:major # Bump the gemspec by a major version. rake version:bump:minor # Bump the gemspec by a minor version. rake version:bump:patch # Bump the gemspec by a patch version. rake version:write # Writes out an explicit version. rake version_required # Setup initial version of 0.0.0
この、rake version:write で作ってくれそうだ。
sugamasao% rake version:write
これでバージョンファイルが作成された。
コミットする
とりあえず、最初のスケルトンの時点でコミットしておきましょう
% git commit *
gemspec の生成
rubygems を作る為には gemspec が必要です。しかし、これも jeweler がうまいことやってくれるので、以下のコマンドで生成しましょう*3。
jeweler gemspec
rake gemspec
これでできたので、git に追加しておく
git add atnd4r.gemspec
そしてコミットしておく
git commit atnd4r.gemspec
そして、push する
もしかしたら、ここの手順は不要で、rake relsease で良いのかもしれない。
でも、おれは最初の push は手動でやったので書いておきますね。
おれの場合、すでに origin は他のリポジトリで名前を使ってしまったので、別の名前をつけることにする
% git remote add origin_atnd4r git@github.com:sugamasao/atnd4r.git
ちなみに、git remote rename old new で名前はかえられるよ
だいたい、Webで調べると origin って付けてるけど、リポジトリ名とかにした方が良いかもね。
それでは github へ push
% git push origin_atnd4r master
できた。
あとは、適宜バージョンを上げておけば、github 上で gems を作成してくれます!
※逆に、バージョンを上げないと gems ができないので、注意
これであなたも
rubygems auther です!
初回以降の開発プロセス
- コードの修正
- rake spec でテスト
- rake version:bump:hoge でバージョンアップ
- rake release でリリース
- gemspec の生成とか
- github への push とか
- github の tags を付け(いつでもそのバージョンをDLできるよ!)
- っていうのをやってくれるから、手動 push よか release の方が良いよ!
追記(Rdoc で日本語が化けるんですけど)
これは、rdoc のキャラセットがデフォルトだと ascii 前提になっているのが原因ですね。デフォルトで UTF-8 にしてほしいところですが。。。
さて、UTF-8 にする方法ですが、Rakefile の rdoc の設定部分で charset のオプションを渡してあげるようにすれば解決します。
Rakefile 内の、
require 'rake/rdoctask'
という行があるところの下に
rdoc.rdoc_dir = 'rdoc' rdoc.title = "atnd4r #{version}" rdoc.rdoc_files.include('README*') rdoc.rdoc_files.include('lib/**/*.rb')
こんな感じの既述があるので、その最後尾に以下のように追記してあげると良いです。以下の例では、UTF-8 の設定の他に、ソースコードの rdoc で行番号を表示する設定も追加してます(詳しくは rdoc 自身のオプションを参照ください)。
rdoc.rdoc_dir = 'rdoc' rdoc.title = "atnd4r #{version}" rdoc.rdoc_files.include('README*') rdoc.rdoc_files.include('lib/**/*.rb') rdoc.options = ["--charset", "utf-8", "--line-numbers"] # <------ 追加
さらに追記(2009/7/26)
github に push してから、実際に gem isntall されるまでは多少タイムラグがある。
GitHub RubyGemsに rubygems 化された状態のリストがあり、install 可能な状態になるとリストに載ります。
つまり、上記ページに載った= install 解禁となります。
ちなみに、10分程度でリストに載るという既述を良く見るけれど、新規登録の時は普通に一時間以上掛かってる気がする。まぁ、ここまできたらのんびり構えて居なさい、ということですね。