トップ 最新

kumaryu日記

2009-02-10 なんかいろいろだめだった

_ [Ruby] Gemとか

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の使いどころはまだ無いのであった。