2008年10月31日金曜日

gemspec.infoのβバージョンをリリースしました

えーと、札幌Ruby会議01以降あまりいじってないのですが、一応αバージョンからβバージョン扱いに移行しました。

バージョンアップ内容

  • ほぼ全てのバージョンの詳細情報を入力させた(いくつかは機械的に取得することが難しかったので諦めた)
  • サーバサイドのバッチ処理が重くて共用サーバに迷惑をかけたので、処理内容の見直しと、タイムアウト処理や高負荷時にバッチ処理をスキップする機能などを盛り込んだ(もう大丈夫なはず)
  • 細かな表示内容の調整

現在3700弱のgemがあり、それぞれのバージョンを保持しているので、17000弱の詳細情報を管理していることになります。

ごめんなさいな内容

仕様として諦めたものがあります。

  • どういうわけかspecファイルを取り出せないgemがあったけど、実害が無いだろうと思って諦めました。gem開いて左側にNO DATAと表示されていたら(かつ結構前にリリースされていた物だったら)諦めて自分でインストールして内容確認してみてください
  • 途中でRubyGemsの仕様が変わったらしく、以前は大文字小文字を認めていたものが、途中で小文字統一になったようです。よって、同じ内容のgemなんだけど別のgem名になったものがあります。(ANTFARMとantfarmとか、Bangkokとbangkokなど) 幸いdowncaseでまとめれるものばっかりだったのでgemspec.infoでは小文字側に合わせてあります。
  • 環境毎にコンパイルが必要なgemがありますが、gemspec.infoの設計上、全ての環境の分の情報は保持できないので、globして最初に引っかかったgem(windows用が多かった気が…)のspecファイルを使っています

まぁ、数は少ないので実害はないかと思います。

機能拡張予定

札幌Ruby会議01でいろんな方と話をする機会があり、不満点やアイデアを貰えたので機能拡張予定に盛り込みます。

  • gemをインストールする前に、そのgemがどんなものであるかを共有する、というgemspec.infoの方針に合致するので、最新gemからrdocを生成してサイトから見れるようにする予定です。
  • rdocもそうですが、specファイルの取得に関しても、現在は手元の開発マシンでデータ抽出を行って、サーバに転送していることが多いのですが、これをうまく自動化できないかなーと。と言っても、サーバのリソース制限がキツイのでマシンパワーが費用名処理は開発マシンで行うような流れになりそうだけど、データ同期が複雑になるしなぁとか考え中
  • githubなど、RubyForge以外のgemにも対応する。でも、ちょっと問題もあるので、詳細は下記参照
  • 開発はMacOSX10.5+Firefoxでしていて、他のブラウザは一度も開いたことがなかったので、ブラウザ互換性をもうちょっと頑張る。てか現状をIE7で見たらダメすぎて萎えた。githubでソース公開して、みんなに助けてもらうのがいいのかな。
  • うんちくでURL指定したときなどに、相手先のコンテンツを取得するタイミングでトラックバックできないかな? トラックバックURLを取得する標準的な方法ってあるんだろうか?
  • ブラウザ互換性の問題とか、オープンソースの強みを生かすには、早めにgithubとかで公開するのがいいかなーとか。(開発マシン・gitリポジトリ・サーバの3点間でcapistranoでデプロイできるんだろうか)
  • とかとか書き殴ると、自分で管理できなくなってくるので、retrospectiva使おうかと思うんだけど、どっかに無料で使えるサービスとか無いかな?

RubyForge以外のgemリポジトリへの対応に対する問題点

個人的にはgemで提供されている機能を一部改造してプラグインにしたり、別名で管理されたりなどしている現状にちょっと疑問を持っていて、本家にマージされて集約されれば便利なのに、そうならない問題への解決策として、githubのgem対応はとても便利だと思うし、gemspec.infoもすぐにgithub対応したいと思っています。

ただ、ちょっと検討してみるといくつか問題がありました。

gemspec.infoはgem名やその詳細を得るのにgemコマンドを使っており、

  • gem list -raコマンドで全gem名と全バージョンが取得できること
  • gem mirrorコマンド(またはrsync)コマンドなどで、インストールせずにgemファイルが取得可能なこと

の2つをクリアする必要があり(下記の理由によりgem sources -addは使いたくない)、またgithub特有の問題として

  • githubで提供されるgem名はユーザ名+ダッシュ+gem名の形で提供されることから、RubyForgeで提供されるgemと名前が重複する可能性がある このへん参照 InfoQ: GemのソースとしてのGitHub とRubyForgeの長所と短所
  • これを回避するため、gem sources -addコマンドでgithubのリポジトリを追加するのではなく、githubにあるgemをインストールしたいならgem install --sourceオプションを使って明示的に指定した方が良い→gemspec.infoとしてはインストールオプションの表示機能が必要かな
  • 他のgemリポジトリをサポートすることによる既存のデータベース構造への影響。特にGemやバージョンのIDとして文字列を使えるよう、friendly_idというプラグインを使っているので、ここをうまく回避できるかどうか

とか、おそらく他にも野良gemリポジトリはたくさんあるんだろうから、どこまでサポートして、それらにはどんな問題があるのか、とかとか。

gemspec.infoを使用|紹介|協力してくださった方々へ

いつもごひいきにありがとうございます。

moroさんにはrails勉強会で紹介していただいたとか。ありがとうございます。

gemspec.infoの開発自体はおいらの趣味がてらといった感じなので、クリティカルな物以外はこつこつやっていこうと思っているところですが、次の件については一人の力ではどうしようもないかなーと思うので、お手すきの時に助けて貰えると有り難いです。

  • ブラウザ互換性に関すること。今回jQuery使ってみたんですが、まだ慣れてないのと、元々ブラウザ互換性に対する知識が乏しいので、「こうじゃぼけー」と書いたパッチなんぞ送ってくださいましたら、即適用でございます。
  • まずはそのgemで何が出来るか、といった部分をまとめていく必要があると思います。gemspec.infoで言うところの、1行メッセージ(何/良/悪)とか、タグなど。じゃないと、同じようなgemが乱立すると思うので。自分でも分かる範囲で書いているんですが、ここを書けるのはある程度使い込んだ人だと思うので、自分の力だけでは50個ぐらいで限界のようです。(検索機能がまともに動かないとコンテンツを活かせないので、そこはおいらがんばりますです)
  • 最近のおいらがそうですが、gemに関する事をググるとき、検索結果から探している答えの候補をタブでポコポコ開きますよね。で、そのうち何件かが答えになると思うんですが、そのとき残ったタブのURLをgemspec.infoに登録しませんか? メモ代わりとして。たぶん同じ事を検索する人がいると思うので。本当は、ブックマークレットみたいなのがあればいいのかなぁと思ったり。(ブックマークレットのテンプレートないのかな?)

0 件のコメント: