RipはGitHubから来たRubyの新しいパッケージ管理システムであり、いろいろなインストール資源(ディレクトリ、ファイル、Gitリポジトリ、RubyGemsのような)を扱うことができる。
もう一つの興味深い新機能は、仮想環境("ripenvs")である。Ripenvsは競合を避けつつ、複数のバージョンのパッケージをインストールして、管理するために用いることができる。Ripenvsは手軽で、より安全に依存関係をアップグレードする手段でもある。つまり、新たに試験環境を構築し、アップグレードしてみて、うまくいかなければ以前の安定した環境に戻すことができる。
だが、なぜまったく新しいパッケージ・マネージャなのか?RubyGemsのどこに問題があるというのか?我々は、Ripの開発メンバーであるChris Wanstrath氏に話を聞いた。
実際、RubyGemsには何の問題もありません。私もRubyGemsは大好きですよ。世間では、RipがRubyGemsを"修正"するため、あるいは置き換えるために書かれたと思われているようですが、それはまったく違います。
Ripはパッケージのインストールや運用、管理をとびっきり便利なものにするために書かれました。パッケージを配布する人のためではなく、パッケージをインストールする人のために書かれたのです。推測や検証作業からではなく、コマンドを叩くことで、アプリケーションがどのライブラリのどのバージョンを使っているかを正確に知りたい人のために。パッケージをインストールするとき、まさにそのことについて考えているときに(アプリケーションを起動するときや、他のことを考えているときではなくてね)、依存関係の競合について知りたい人のために書かれたのです。
デバッグを手伝おうとして「動いているXのバージョンはなに?」なんていう質問はしたくない人のために書かれたのです。それは、すべての製品が同じライブラリの同じバージョンで動いている、という保証が欲しい人々のためのものです。変更をコミットする前に、ライブラリのアップグレードが環境にどういった影響を及ぼすか、調べておきたい人々のためのものです。
Ripは他のシステムの悪いところを見て書かれたのではなく、良いところを見て書かれています。
単にRubyGemsを改良した方が簡単だったのではないか?
RipとRubyGemsはまったく違う生き物です。本当に、この2つは目的の異なる別々のプロジェクトなのです。私はRubyGemsの方向性、主なユーザ、基礎をなすコードを完全に変えてしまうことが、簡単だとも、また適切だとも思っていません。2つのシステムはうまい具合にお互いを引き立て合って、共存していくことができます。
- RubyGemsは`require`を書き換えますが、Ripは$LOAD_PATHを使います。
- RubyGemsは`require "rubygems"`を必要としますが、Ripは$RUBYLIBを使います。
- RubyGemsはライブラリのさまざまなバージョンをひとつの環境で管理しますが、Ripはライブラリのバージョンごとに複数の環境を使って管理します。
- RubyGemsは.gem形式のファイルをインストールできますが、Ripは理論上、どんなパッケージ型式でもインストールできます。
仮想環境はRubyのいろいろなバージョン(JRubyのような)に向けてパッケージを管理する目的にも、申し分ないように思われる。
その通り。できることなら異なるRubyに異なるripenvs(インストール可能なRip仮想環境)を配布したい。これは間違いなくRipが適したケースです。ひとつは1.9、ひとつは1.8、ひとつはJRuby – Ripを使えば、あなたにとってもユーザにとっても、簡単になります。
これがRipのやり方です。特別な機能は必要ありません。
Ripはバージョン0.0.1がリリースされたばかりだが、将来に向けてなにか計画しているのか?
私たちはまだ宣伝を始めていませんし、ripenvsの持つ可能性を見つけ出すこともできていません。たったひとつのコマンド(e.g. `rip freeze | gist`)で開発環境を共有できること、バージョン間の競合を心配せずに開発環境をマージできること、ripenvsを使ってアプリケーションの配備を促進すること、は注目すべきアイデアの一部にすぎませんが、Ripの優れている点を明らかにする助けになります。
ripenvに加えた変更を簡単に表示したり、元に戻したりできるように、gitの`reflog`のアイデアをコピーしたいとも思っています。Ripを使っているとき、データやセットアップの損失を心配をしなくてもいいようにね。
名前は知っているけれどURLがわからないとき、パッケージを見つける良いアイデアもあります。
当然、hg、svn、bzrのサポートは計画されています。どこからでもインストールできるのです。
Rip 1.0では、Windowsのサポートも必要でしょうね。
さらに詳しい話と簡単なチュートリアルは、Ripのウェブサイトで見ることができる。