参考になるかどうかわからないけど、(自分用に)Gemを作った仮定をメモしておきます。
かなーり適当な事を書いてますので、突っ込みよろしくです。
まず、GemとPluginの使い分けから。
- Gemはシステムに入れるもので、複数のRailsアプリや、Railsを前提としない環境で使う
- PluginはRailsアプリに入れるもので、特定のアプリのみで使う。複数のアプリで使い方ったら、それぞれに入れる。
今回は、Rails環境を簡単に作るためのGemを作っていますので、これを題材にします。
よく調べてないけど、関連状況はこんな感じ。
- gemの配布はRubyForgeにgemを登録する事で行う。ユーザ登録やgem登録などは無料。
- RubyForgeへのgem登録は、昔は.gemと.tarを手動でアップロードしてたけど、今はrakeタスクがある。(hoe)
- gemのひな形としてnewgemを使う。これはhoeを含む。
- hoeはgemの作成・登録を便利にするためのgem。newgemに含まれる。
- このチュートリアルでのパッケージ名はrocketstarterにするよ。
参考
RubyGems パッケージの作り方 - rubyforge 登録まで ※さすがにちょと古い。概念押さえるべし
RubyGemsパッケージを作る ※新しい。基本はコレ
rubyforgeがとても便利 ※新しい。ノウハウはコレ
手順としては、
- RubyForge上に自分のアカウントを作る
- RubyForge上で新規プロジェクトを登録する
- newgemのインストールとRubyForgeの設定
- newgemを使ってひな形を展開する
- ひな形をベースに管理情報やライセンスなどを書き込んで、公開したいプログラムを配置する
- testまたはrspecを書いておく
- rakeタスク(hoe)を使って、gemをビルド&インストールしてみて、動作を確認
- rakeタスク(hoe)を使って、RubyForgeに登録する
- RubyForgeへのアナウンス
1.RubyForge上に自分のアカウントを作る
無料なのでさっさと作ってしまうのが吉。
本名曝す事になるのは、しょうがないのかな?
SSHの公開鍵なんかもさっさと登録!!
2.RubyForge上で新規プロジェクトを登録する
プロジェクト登録は最大48時間かかるって書いてあるので、登録待ちでしょんぼりしないように、先に作っておくと良い。
申請内容を微調整される事もあるので、newgemに手を出す前に登録できた事を確認した方がいいよ。
あと、プロジェクト登録前にプログラム作っちゃうと、新規プロジェクト登録時に他のプロジェクトと名前が被っていて、そのままでは登録できないって罠にハマる可能性があるよ。<ハマったやつ
3.newgemのインストールとRubyForgeの設定
gem install newgem
でgemをインストールしておき、
rubyforge setup
で設定ファイルを作ったら、
rubyforge config
でRubyForgeからプロジェクトIDを取得しておく。
※先にRubyForgeで新規プロジェクトの申請をしておき、登録済みになってないとプロジェクトIDは取得できない。
2008/6/20 12:00追記
なんかgem list -rに出てこないなぁと思ったら、rake releaseに失敗してたみたい。対処法としては上記rubyforge setupとconfigを終えてから、
rubyforge login
として、エラーが無い事を確認。(エラーがある場合は、ブラウザからRubyForgeにログインして、言語をEnglishにしておく。rubyforge loginでは、ログインできた事の判定にtitleタグを使っているらしく、これは言語設定により異なるため)
あと、後々rake deployやrake releaseの時に
などのエラーが出る場合は、rubyforge configに失敗していて、一部データが取得できてないので、以下のyamlデータを~/.rubyforge/auto-config.ymlに貼っておく。参考 Building a Ruby Gemno <processor_id> configured for <Any>
processor_ids:
IA64: 6000
AMD-64: 1500
Any: 8000
Sparc: 4000
PPC: 2000
Other: 9999
Alpha: 7000
i386: 1000
UltraSparc: 5000
MIPS: 3000
4.newgemを使ってひな形を展開する
newgem rocketstarter [options]
でひな形を展開する。
この時点でオプションを指定しておけば、のちのち楽になるものがたくさんある。
$ newgem --help
Take any library or Rails plugin or command line application, gemify it, and easily share it with the Ruby world.Usage: newgem /path/to/your/app [options]
Options:
-b=BIN_NAME[,BIN_NAME2] Sets up executable scripts in the bin folder.
--bin-name Default: none
-e, --email=PATH Your email to be inserted into generated files.
Default: ~/.rubyforge/user-config.yml[email]
-j, --jruby Use if gem is for jruby.
-a, --author=PATH Your name to be inserted into generated files.
Default: ~/.rubyforge/user-config.yml[user_name]
-p, --project=PROJECT Rubyforge project name for the gem you are creating.
Default: same as gem name
-r, --ruby=path Path to the Ruby binary of your choice (otherwise scripts use env, dispatchers current path).
Default: /opt/local/bin/ruby
-T, --test-with=TEST_FRAMEWORK Select your preferred testing framework.
Options: test::unit (default), rspec.
-v, --version Show the newgem version number and quit.
-V, --set-version=YOUR_VERSION Version of the gem you are creating.
Default: 0.0.1
-W, --website-disable Disables the generation of the website for your RubyGem.
--simple Creates a simple RubyGems scaffold.
General Options:
-h, --help Show this help message and quit.
--pretend Run but do not make any changes.
-f, --force Overwrite files that already exist.
-s, --skip Skip files that already exist.
-q, --quiet Suppress normal output.
-t, --backtrace Debugging: show backtrace on errors.
-c, --svn Modify files with subversion. (Note: svn must be in path)
とりあえず
newgem rocketstarter --bin-name rocketstarter --test-with=rspec -e "myaddress@example.com" -a "maimuzo"
あたりで作るかな。
5.ひな形をベースに管理情報やライセンスなどを書き込んで、公開したいプログラムを配置する
config/hoe.rbあたりをいじった後にgrep -r "FIX" ./*して引っかかったところをすべてチェック。
上記-aと-eを付けておくと、この作業が楽になるよ。
あとは、適当に。
プログラムの配置は、binの中の実行ファイルと、libの中のrocketstarter.rbを変更して、実態はlib/rocketstarter/の中に入れた。
あと、サポートフォーラムとして、google groupsに部屋作れって書いてあるね。(一応素直に作った)
6.testまたはrspecを書いておく
今回は動作環境がよくわかってないので、後付けにするよー
7.rakeタスク(hoe)を使って、gemをビルド&インストールしてみて、動作を確認
ちなみに、--simpleオプションをつけると、この機能は使えない。
まず、公開用のRSA公開/秘密鍵を作る
rake generate_key
マニフェストファイル(パッケージに含めるファイル?)を最新状態で作り直す
rake manifest:refresh
現在の設定でgemを作って、ローカルにインストールしてみる。
rake local_deploy
だめぽだったら
sudo gem uninstall rocketstarter
して、変なところを直してからまたrake local_deployする。
8.rakeタスク(hoe)を使って、RubyForgeに登録する&告知する
rake check_manifest
でファイルの整合性が崩れてないか念のためチェック
rake deploy VERSION=0.0.1
でリリース。しばらく待つべし。
9.RubyForgeへのアナウンス
rake announce
でいいみたい。
gemの配布が始まってからの方がいいかもねー
0 件のコメント:
コメントを投稿