BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース RubyGemsのまとめ: RubyGems 1.2のリリース、JRuby、より高速なGemリリース機能

RubyGemsのまとめ: RubyGems 1.2のリリース、JRuby、より高速なGemリリース機能

Eirc Hodel氏(Eric氏のインタビュー記事(参考記事・英語)を見て欲しい)は、RubyGemsの1.2をリリースした(リンク)。リリースノートを見るとわかるが、新しい機能は多くない。
  • RubyGemsは大量の無駄なアップデートは実行せず、必要とするgemspecファイルだけを取得するようになりました。メタデータを利用した新しい更新機能を利用するためにはgemの提供側がRubyGems 1.2 へアップグレードする必要があります。ソースリストの中のリモートソースが、1.2より古いバージョンの場合、RubyGemsは互換性の為に、以前のやり方で更新を行います。
  • RubyGemsの依存gemライブラリの種類を実行時依存と開発時依存とに区別できるようになりました。これを実現するには、#add_development_dependency#add_runtime_dependency を利用します。依存ライブライリの種類を指定しない場合は、すべて実行時依存のライブラリと見なされます。
  • RubyGemsはrubygems/defaults/operating_system.rb and rubygems/defaults/#{RBX_ENGINE}.rb がある場合、requireするようになりました。パッケージやrubyの処理系を実装をする人は、これらのファイル使ってRubyGemsの挙動をカスタマイズすることができるようになります。(もし、RubyGemsのAPIが不十分な場合は、メーリングリストで改善案を提案してください。) 
  • /etc/gemrc (とWindowsで同等のもの) を使ってグローバルな設定ができます。
  • setup.rb はパッケージを作る人のために --vendorと--destdir を指定できるようにしました。
  • 最終アクセス日時の順でgemのリストを表示するgem stale コマンドを追加しました。
リリースノートによると、RubyGemsを現在のバージョン(少なくとも0.8.5)からアップデートするには以下のコマンドを使う。
$ gem update --system   (おそらく管理者権限で実行する必要がある) 
GitHubのブログにあるように、RubyGems 1.2では、簡単にGitHubからGemsをインストールできるようになっている(リンク)
あなたの為を思って教えますが、Rubyistなら以下のコマンドを実行してみた方がよいでしょう。
$ sudo gem update --system 
$ gem sources -a http://gems.github.com
RubyForgeからgemをインストールしていたのと同様に、直接ソースを指定することなくGitHubからもgemをインストールすることができるようになります。

今のところ、JRubyのユーザは、RubyGems1.2を使い始めるには少し準備しておく必要がある。Vladimir Sizikov氏は、現在のJRuby 1.1.xリリースでRubyGems1.2が動かせるように回避策を提供している(リンク)
jruby -S gem update --system
通常なら問題ないこのrubygemsのアップグレードコマンドはJRuby 1.1.2ではうまくいきません。これはrubygems 1.1.1のバグに起因するものですが、幸運なことに回避策はあります。
jruby -S gem install rubygems-update -v 1.1.1
一度このアップデートがインストールされてしまえば、上にある本当のアップデートコマンドが実行できるようになります。
実は、これは単なる最初の一歩にしか過ぎず、Vladimir氏のメールの続きには、RubyGems 1.2を動作させるためにはどういう手順で行えばよいか、どのファイルをダウンロードするべきか、という話の詳細が述べられている(リンク)
注意: この手の作業をするのを避けたい場合は、とりあえずRubyGems1.2と一緒にリリースされる予定のJRuby 1.1.3を待つのがよいだろう。Ruby1.9のChangelog(リンク)の概略を見ると、1.9.xのtrunkバージョンも、RubyGems 1.2が動くようにアップグレードしているのがわかる。

最後になるが、Tom Copeland氏はRubyForgeのGemインフラの改良点を発表している(リンク)

この案は、新しいgemのファイル名は記録しておき、RubyForgeはリクエストをミラーサイトへリダイレクトするのではなく、自前でこれらのgemを提供するようにするというものでした。.. 全てのミラーサイトが更新されるのを待つことなく、gemが提供されることになります。今ちょうど、24時間ぐらい経過したらリストからファイル名を取り除くという短いコードを、書こうとしているところです。それぐらい経過していれば、gemの同期は完了していることでしょう。
つまり、まとめると、リリースされたすぐ後にgemは利用可能になります。

原文はこちらです:http://www.infoq.com/news/2008/06/rubygems-12-faster-gems

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT