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+,
slashdot+
Hatena

特集コンテンツ一覧

Flex 4の新機能トップ10

今週(2009年6月1日)AdobeはFlex 4の正式な初ベータ版をリリースしました。Flex 4はGumbo(オクラ)というコードネームで開発されています。今回のリリースには大きな変更が多数含まれています。このRIAフレームワークの最新バージョンにおいて変更された事柄についての概要を以下のリストで見ていきましょう。

Domain Driven Design(ドメイン駆動設計) Quickly 日本語版

ビジネス領域の深い理解を反映したドメインモデルを設計するための、ヴィジョンとアプローチです。この本は、Eric Evans氏の「Domain Driven Design」の主要点を短く読みやすく要約しました。

JavaプログラマがFlexとBlazeDSを学んだ方がいい13の理由

この記事ではJavaプログラマがなぜFlexとBlazeDSを学ぶべきなのかについて13の理由を述べています。なぜ高度にインタラクティブなWeb サイトからJavaで開発されたバックエンドをもつエンタープライズ・アプリケーションまでを含む、リッチ・インターネット・アプリケーション(RIA)の開発にFlexとBlazeDSの組み合わせが最適な選択肢となるのかについて述べています。

仮想パネル: バックログは重要な成果物とプラクティスか、それとも無駄か?

Mary Poppendieck氏、Ron Jeffries氏、Jeff Patton氏、David West氏、Steve Freeman氏、Jason Yip氏が、バックログに関する彼らの意見とアジャイルチームを成功させるために必要な事を語った。

Perf4Jを使ったパフォーマンス解析とモニタリング

この記事ではAlex Devine氏が、Java開発者がPerf4Jをどのように利用できるかと、タイミングステートメントにコードを追加し、ロギング、結果の解析とモニタリングを行うオープンソースツールセットの説明をします。

複雑な外部DSLを開発する

本稿では、Vaughn Vernon氏が内部DSLと外部DSLの違いを説明し、複雑な外部DSLを開発する際のステップを示します。

J2EEアプリケーションにおけるAOPを使ったフェッチ戦略の実装

この記事では低レベルのサービス・レイヤやリポジトリ・レイヤを肥大化させることなく、フェッチング・ストラテジによってモジュール化された方法でバックエンドにあるシステムからデータを取得する処理を最適化する方法について説明します。

実証済みのアイデアの融合: S#arp Architectureの裏側

この記事では、Web開発における多数の成熟傾向と、クライアントに価値を提供することに対するそれらのメリット、およびS#arp Architecture(最善の手法と技術を活用しようとするASP.NET MVCをベースとしたフレームワーク)内でのそれらの使用について取り上げます。