gemの勉強するのに手元ですぐリリースできそうなのがrsdlなので、ちょっくらrsdlをgem化するかと。
gemの作り方を調べるとnewgemと言うのを使うと便利らしいので入れようとするとなぜかredclothとか入れはじめて、しかも1.9対応してないので失敗。
cutagemと言うのもあるらしいので入れようとしたら、入りはするんだが実行すると1.9対応してなくて失敗。
しかたないのでちゃんと調べて書くか。
とりあえずrakeのドキュメントの例をコピペしていじってみた。なんか中途半端な例だったけど、rubygemsのドキュメント見ながらなんとかしたぜ。
で、rsdlはCコンパイル必須なコマンドなのでそれっぽく書いたら、gem作るときにbin/rsdlがねーといいやがる。それを生成するんだよ。
まあとりあえずダミーの空ファイルでもおいておくか。
specにplathomeを指定するとこで悩んだ。ドキュメントでは'ruby'とかしていしろよて書いてあるんだが、とかの部分が何も書いてない。
ソースをみるとインスコ時にコンパイルするのは'ruby'でいいらしい。そう書けよ。
でgemは警告が出ながらも適当に作れたんだが、試してみるとなぜかconfigureを実行しようとして止まる。なんでー?
ソース見たらextconf.rbじゃなくてconfigure.rbとかにしといたら、configureを実行する仕様らしい。ファイル名指定させといて意味付けすんじゃねーよ!しかも全然ファイル名みてないし!
しかたないのでextconf.rbにしてなんかできたっぽい。
インスコもできたのでいざ実行。したらなんかloadができないとかなんとか。
いれたrsdlの中身みたら、実体をloadするスタブだったよ。あー、バイナリな実行コマンドはgemでは入れられないのね。
ということでgemのお勉強は終了。gemは仕組みはいいけど、実装のダサさが最高潮だと思った。
いや、本当は続きがあるんだが。
じゃあということでRubyCocoaなrsdlを作ろうとしたけど挫折したのであった。
どうもBackgroundプロセスっていうのをForegroundプロセスっていうのにしないといけないみたいなんだが、それをやるためのAPIがCarbonにしかないので、結局拡張ライブラリを作る羽目に。
そうするとコンパイルいらずな利点がない。
で、起動は出来たけど終了時にautorelease poolがないのにautoreleaseしたからメモリリーク!と言う警告が出てしまってどうも回避できなかった。
いろいろいじったけど分からなかったから、やっぱりrsdlは自分でコンパイルしていれろや終了ということで。
とりあえず手元では1.9対応してあるのであとで上げる。
上げた。<URL:http://www.kumaryu.net/?%28Ruby%29+Ruby%2FSDL%CD%D1ruby>。お待たせしてすみません。
かくしてgemの使いどころはまだ無いのであった。