InfoQ

News

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

作者 Werner Schuster, 翻訳者 近藤 修平 - (株)永和システムマネジメント 投稿日 2008年7月14日 午前6時10分

コミュニティ
Ruby
トピック
ランタイム
タグ
Releases,
JRuby,
RubyGems,
Ruby1.9
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

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

クラウドコンピューティング ~ EC2、Mosso、GoGrid

クラウドコンピューティングのプロバイダーであるEC2、Mosso、GoGridの新しいユーザーエクスペリエンスと、それぞれの機能の違いについて学びます。

仮想化入門

このArticleでは仮想化に関する利点と欠点を見ながら、仮想化の違いについて詳しく追っていきます。

Java 6のスレッド最適化は実際に動作しているのか? - パートII

パート2では、ベンチマークの結果を検証するために用いられるテクニックについてさらに深く見ていきたいと思います。最後に、「なぜプロセッサが異なるとロックのコストも大きく異なるのか」と言う真の疑問に答えます。

RESTアンチパターン

本稿では、Stefan Tilkov氏が「RESTful」な設計であると主張するアプリケーションに見受けられる最も一般的なアンチパターンのいくつかについて説明し、それらを避けるための方法を提案しています。

モデル駆動ソフトウェア開発のためのベストプラクティス

Sven Efftinge氏、Peter Friese氏とJan Köhnlein氏が、MDDを取り入れて成功した経験から、ベストプラクティスの解説を行います。

スケーラビリティの構築とパフォーマンスの達成:バーチャルパネル

Our panel of leading experts explores some of the challenges and thought processes that go into making their apps as scalable and performant as possible.

Spring 2.5:Spring MVCの新機能

この記事は、Spring 2.5で導入されたアノテーションを探究する3部作の第2弾です。Web層におけるアノテーションのサポートを扱います。最後の論文では、統合と検査で利用できる追加機能を説明する予定です。

"YUKATA"から始まるコミュニケーション(Agile2008 ライトニングトークより)

私は「浴衣」を着てパーティーに参加したことで、たくさん声を掛けていただけました。 そこで感じたことは、このカンファレンスが人との繋がりを生み出し、また言葉の壁を越えて積極的に交流する場所であることです。民族衣装はそれらを助けてくれるものでした。きっとこの交流が、新たなムーブメントをアジア圏の仲間たちにも与えてくれると確信しています。