RVM Autolibs:自動依存関係管理とRuby 2.0



先月、ルビーの新たなマイルストーン-Ruby 2.0.0のリリースが始まりました。 それにより、更新されたRubyGemsおよびOpenSSLを含む新しい依存関係。 以前は、RVMはRubyGemsが機能するために必要であったため、依存関係を解決するためにほとんど何もせず、代わりにLibYAMLをインストールしました。 これは大きな依存関係であるため、OpenSSLの出現により状況は変わりました。 Ruby 2.0.0-rcの場合、RVMはOpenSSLのインストールに使用されていました。 ただし、OpenSSLのコンパイルは、LibYAMLを使用した簡単なタスクではありません。



新しいアプローチ

すべてを機能させるために、RVMは新しいアプローチを採用しています。 これで、必要なライブラリをインストールするときに、システムパッケージマネージャーと連携して動作します。 これは簡単な作業ではありません。システムごとにパッケージ名が異なるため、一部はデフォルトで使用可能ですが、一部はまったく使用できません。



簡単なときは簡単です

任意のシステムで既存のパッケージマネージャーを使用するのは非常に簡単です。 OSXの場合のように、システムにデフォルトのパッケージマネージャーがない場合に問題が始まります。 多くのパッケージマネージャーがありますが、どれも事実上の標準になるほど人気が​​ありません。 このため、RVMはインストールされたパッケージマネージャーを見つけるか、使用できない場合はインストールする必要があります。



機密のデフォルト

autolibが最初に追加されたとき、RVMはユーザーが彼のために行われたすべての作業を望んでいると考えました。 ただし、一部のユーザーは考え方が異なり、依存関係を手動でインストールすることを好むことが現実に示されています。 全員を満足させるには妥協が必要でした。 その結果、RVMは利用可能なライブラリを決定し、利用できない場合は失敗します。 ユーザーは、「 自分のためにすべてを行う 」や「 自分でやる 」など、さまざまなモードを切り替えるオプションを使用できるようになりました



全部やってくれ

ライブラリを自動的にインストールするユーザーは、autolibsモード4別名を使用できます。 有効にします。 これにより、RVMにパッケージマネージャーを見つけ(必要に応じてインストールし)、すべての依存関係をインストールし、最終的にそれらを使用してコンパイルします。 パッケージマネージャーが利用できない場合(OS X上)、Homebrewがインストールされます。 ただし、ユーザーは、autolibのosx_port、osx_fink、およびsmfモードでインストールするマネージャーを指定することもできます。 smfマネージャーは、あまり知られていないRailsInstaller SMフレームワーク用です。

システムパッケージマネージャーがインストールされているシステムの場合、モード4はモード3と同じであり、不足しているパッケージがインストールされます。



自分でやる

RVMですべてを実行したくないユーザーには、2つの適切なモードがあります。 モード1では、ユーザーはRVMにライブラリを取得し、使用できない場合は単にエラーをスローするように指示できます。 自動可用性チェックでさえも不要な場合は、モード0を使用してオフにすることができます。ただし、微妙な違いがあります。 コードがより動的になっていることを考えると、必要なものを示すリストはもうありません。 これは、システムの状態に応じていくつかのライブラリが選択されることを意味します。



いくつかのトリック

RVMをRuby、Ruby on Railsおよび必要なライブラリ(別名、貧しい人々のためのRailsInstaller)と共にインストールするには:

\curl -L https://get.rvm.io | bash -s stable --rails --autolibs=enable
      
      





capistranoの場合のように、sudoが特別な処理を必要とする開発でrvmを使用するには:

  task :install_requirements do sudo “rvm --autolibs=4 requirements #{rvm_ruby_string}” end task :install_ruby do run “rvm --autolibs=1 install #{rvm_ruby_string}” end
      
      





autolibsの詳細については、rvm.io/rvm/autolibsをご覧ください



フィードバック

autolibsコードを長い間テストしましたが、より多くの人々の注意のおかげで、新しいクラスを作成し、脆弱性を修正できます。 脆弱性が見つかった場合、喜んで修正します。 すべての脆弱性リクエストをバグトラッカーgithub.com/wayneeseguin/rvm/issuesまたはIRCチャネルwebchat.freenode.net/?channels=rvmに送信します



RVM 2.0の公式の作業開始。

RVM 1.19は、新機能(Autolibs)を備えた最新リリースです。 将来的には、RVM 2.0のリリースまで、すべての革新が遅れます。 サポートを提供し、RVM 2.0の安定したリリースがリリースされるまで、バグの修正とバージョンの更新に取り組みます。 ただし、RVM 2.0で作業できるようにするため、RVM 1.xで利用可能な新機能のリリースを一時停止します。



All Articles