なんか deprecated だよっつって gem が作れなかったので調べてみました。
0.9.0 から
Rake::GemPackageTask is deprecated. Use Gem::PackageTask (require 'rubygems/package_task')
だそうです。
cutagemベースの拙作shlauncherなんかも同様ですが、以下のように書き換えると gem package を作ることができます。
-require 'rake/gempackagetask'
+require 'rubygems/package_task'
-Rake::GemPackageTask.new(spec) do |p|
+Gem::PackageTask.new(spec) do |p|
rubygems の方に Gem::PackageTask が追加されたのはなんと 2009-04-15 だそうで、もう2年半前じゃん…。
さて先日cutagemのおかげでグイグイgemが作れるようになったわけですが、せっかく作った gem が手元にだけあっても仕方ないわけです。gem 化するメリットはインストールが楽、つまり deploy が楽ということだと思っています。
まぁ公開しているものなら rubyforge や github1 に置けばいいわけですけど、公開できないものだっていっぱいあるわけです。というかイントラでこそきちっとパッケージ管理したいと最近はよく思うわけです。
というわけで、まず基本はるびまですな。今さらながらるびまが便利すぎる。ありがとうございます。マジで。
Rubyist Magazine - シリーズ パッケージマネジメント 【第 2 回】 RubyGems (2)
ここに gem server というのが出てきますが、よく読むとこれ WEBRick を使っている。えー、WEBRick の管理なんかしなきゃいけないの?と思ったらどうも話が違うようで、ちょっと長いけど引用すると、
webrick のインスタンスを個別にに走らせる代わりに既にある自前のウェブサーバを使いたいかもしれない。問題ない。 $ ssh chad@mywebserver.com password: mywebserver$ cd /web/server/document/root mywebserver$ mkdir gemserver mywebserver$ cd gemserver mywebserver$ mkdir gems mywebserver$ scp chad@myotherhost.com:/home/chad/some_cool_lib-0.0.1.gem gems/ chad@myotherhost.com's password: some_cool_lib-0.0.1.gem 100% 11KB 11.0KB/s 00:00 全て準備できた。お預けだった gem server の話に戻ろう。 $ generate_yaml_index.rb $ ls gems yaml yaml.Z これだけ! これでインターネットに繋がっているコンピューターならどこからでもインストールできる:
ん?
んん?
これって要するに
DOCUMENT_ROOT 以下に package 本体と index がただ置いてあるだけ
じゃないのか? マジか。ステキすぎる。gem の server ってこんな簡単に作れるのか。てゆーか Web サーバがすでに動いている場合は実際には server 作ってないよな。index を作ってるだけだ。
すげぇ。簡単すぎる。
毎度毎度こういう言い回しに飽き飽きしてる人も多いかもしれないけど、pear の channel-server に爪のアカ飲ましてやりたい。確かに gem の場合はクライアントサイドの負荷が高いけど、pear の channel-server は MySQL を要求するとか準備がやたら面倒くさいうえにいつまでもバージョンが上がっていかず、本当にセットアップしていいんかすげー不安にさせる。結果、URI package という、package をポンと置くだけの仕組みに流れちゃったりするんだけど、そうなると install も upgrade も downgrade も直接 URI を指定しなきゃいけない、つまりクライアントサイドからは新しいバージョンがあるのかどうかも全然分からないというダメダメな状況になっちゃう。
でも gem はこの URI package と同じ仕組みで package の検索も upgrade も自動化できてる。
これでいいじゃん。
実際にはるびま本文中に出てきた generate_yaml_index.rb というものはすでになくて、代わりに
gem generate_index
というコマンドができているのでこれを使うといいです。使いやがれ。
これは便利だ!
cf.
- Twitter / wtnabe: generate_yaml_index.rb ってど …
- Twitter / wtnabe: gem generate_index だった。
- Twitter / wtnabe: gem サーバ側では HTTP を喋るサーバがいて …
今なら gemcutter.org ↩
mozdev.org - reminderfox: index
※ まだ使ってみてないです。インストールしただけ。
以前 Common Notifier API 妄想 なんてのをぶち上げてみたりしてるわけだけど、実はこれでいいのかもしんない。
- Reminderfox に notifier とスケジュール追加の機能があり
- iCal サーバと通信できるのでフル機能のカレンダーアプリのように凝る必要がない
- 元が MUA なのでメールドリブンの予定管理に最適
てな印象。早速使ってみます。Thunderbird 2.0 のタグ機能とも連携してますな。当然カレンダーに載っからない TODO 管理には使えないけど。
明徳は部員の不祥事、しかも喫煙という違法行為つき。これは弁解の余地なし。1駒大苫小牧は部長の暴力であって部員が起こした問題ではない。部長が責任を取るだけでよいのでは。父兄の側が対応は大会後でいいと言ったという報道が事実なら。
それでいいとは思わないけど、どこの体育会系組織も多少の暴力はそらあるわさ。問題はそれが当然と思われているくせに高校野球などの場合にのみタブーとなることなのか、そもそもそれが当然という状態なのか。その辺から考え直さないと。単にあっちゃならんことだから処罰するってんじゃー不健全だと思うなぁ。
合理的なプロセスなしに全体を押さえつけてしまえば、押さえつけられた組織が陰湿化するのは過去を振り返れば容易に想像がつくってもんだ。厳しい社会体制の国家を思い浮かべても納得がいくし、校内暴力からいじめに至る教育問題の歴史を紐解いてもいい。
だからと言ってチーム全体の連帯責任になるのもどうかという気がしないではないが。知ってた大人は責任を取るべきだと思うけどね。 ↩
Just another Ruby porter なわたなべさんとこ から。
Markdown という setext のような書式付きテキストを解釈して HTML を出力するスクリプトの Ruby 版。しかもライブラリとして使えるので本家より応用範囲は広い。残念ながら table は書けないが、これなら巷の Wiki フォーマットと違ってメールでもそのまま送って違和感がない。
残念なのはこれを使った Wiki がないことくらいか。作れって? えー。
Mobo-dev メーリングリストで流れていたのと、たまたま textfile.org で見かけたので、ちょっと探ってみる。
XML について少しでも知っているなら
を押さえたうえで本家 http://www.yaml.org/ を眺めるといいかもしんない。で、へーと軽く思ったら次はこれだ。
まだ読んでないけど、developer Works なので外れってことはたぶんないと思う。
syck は PHP, Python, Ruby に対応したライブラリ1。
参考
- Syck
- search.cpan.org: YAML - YAML Ain't Markup Language (tm)
- YAML を Ruby で使う
- YAML Cookbook
- 書式を Ruby と比較しているので Ruby が読めるとサクっと分かる。はず。
誰か awk で処理系書かないかなぁ。。。なんてことを考えてみるてすつ。
Ruby 1.8 で取り込まれた。Ruby 1.8 はこの他に iconv 対応を標準で果たしているので、utf-8 な yaml をすごく手軽に扱い始めることができる。 ↩
まだモノは手にしてないけど。
あと要るのは
- カードリーダ 2000〜3000円くらい?
- 128MB SDカード 3000〜4000円くらい?
ですか。