GNU/Linux >> Linux の 問題 >  >> Linux

RVM(RubyenVironmentManagerまたはRubyVersionManager)とは何ですか?

対象読者:

この記事は、1台のマシンに複数のRubyインストールをデプロイまたは管理する必要がある人を対象としています。読者は、RubyおよびRubygemがオペレーティングシステム内でどのように機能するかについての基本的な理解を持っている必要があります。

はじめに

画像:まつもとゆきひろによるRubyロゴ、Ruby Visual Identity Team / CCBY-SA2.5でライセンス供与

複数のRuby環境を管理することは困難な場合があります。 Rubyはオープンソース言語であるため、新しいリリースが頻繁に発生する可能性があり、それらのリリースによって機能が大幅に変更される可能性があります。この可能性を、特定のRubyバージョン内の機能に依存する可能性のあるサードパーティのGemsの使用と組み合わせると、アプリケーションは、実行するだけで必要なすべての依存関係を満たすのに苦労していることにすぐに気付くことができます。 RVM(RubyenVironmentManagerまたはRubyVersionManagerとして交互に拡張)は、アプリケーションが使用するRubyのバージョンだけでなく、Gemセットとバージョンもアクティブに制御できる一連のコマンドラインツールを提供することにより、この問題に正面から取り組みます。それは使用しています。以下では、RVMとは何かについて説明し、RVMが提供する各メリットについて説明します。


複数のRuby環境の管理

RVMを使用すると、1台のマシンに複数のバージョンのRubyプログラミング言語をインストールできます。 Rubyプログラミング言語のネイティブインストールは、言語のバイナリを共通のbinにインストールします。 オペレーティングシステム上のディレクトリ。したがって、インストールされているバイナリを変更すると、マシンでホストされているすべてのRubyアプリケーションに影響します。 2.1.4から2.2.1などの比較的マイナーなバージョンの増加でさえ、既存の言語の動作を壊す言語への変更を導入する可能性があります。

RVMを使用すると、これらの言語バイナリを個別に管理されるように分離できます。システムで自由に使用できる環境。各インストールを個別のディレクトリと依存関係のセットにカプセル化し、バージョンをすばやく切り替えるための使いやすいコマンドラインツールを提供することで、この分離を実現します。 RVMは、関連するすべての実行パス、環境変数、およびインストールされているサードパーティライブラリのスワップアウトを処理し、開発者が依存関係を管理するのではなく、アプリケーションの開発に集中できるようにします。

RVMが重要な理由

単一の小さなアプリケーションの場合、RVMはやり過ぎのように見えるかもしれません。ただし、コードベースが特定のレベルの複雑さに達すると、アプリケーションが依存している依存関係を正確に追跡することが困難になる場合があります。さらに、アプリケーションが成長し、さまざまなRuby Gemsを活用するにつれて、これらのサードパーティライブラリはさらに依存関係を導入し、単純なバージョン変更を危険に満ちた複雑なイベントにする可能性があります。たとえば、バージョン2.1.0のリリースでは、多くのGemsがSOAP機能を提供するために使用するREXMLパーサーに重大な変更が加えられました。この考慮事項は、複数のRubyアプリケーションを一度にホストする可能性のあるVPSホストWebサーバー(Resqueベースの遅延ジョブサーバー、Rails上に構築されたWebサーバー、Sinatraベースの管理コンソールなど)にとっても重要です。いくつかの異なる依存関係のセットが適切に動作するいくつかの異なるアプリケーションを取得することは、それ自体がフルタイムの仕事になる可能性があります。異なるRuby言語バージョンを別々の環境にカプセル化することにより、RVMを使用すると、開発者は新しいバージョンをテストし、変更を壊すことを心配せずに既存のアプリケーションをデプロイし、アプリケーションインフラストラクチャの管理にかかる時間をできるだけ短くすることができます。

>

依存関係の競合の解決

RVMを使用することで得られる最も明らかな利点は、依存関係の管理です。 Rubyプログラミング言語のインストールを個別のコマンドライン駆動型環境にカプセル化することで、バージョンの依存関係をより簡単に制御できます。 RVMをBundlerなどのGem管理フレームワークと組み合わせると、言語ベースの依存関係の競合が過去のものになる可能性があります。現在のインストールと互換性のあるバージョンのGemを使用していることを確認するだけです。さらに、RVMを使用すると、必要なGemsのみがインストールされることを確信できます。 RVMによって管理される各Ruby環境には独自のGemsのセットがあるため、Ruby実行環境自体に影響を与えるGemsを使用する可能性のあるアプリ間の相互汚染はありません。

導入の簡素化

RVMは、重大な変更を軽減し、依存関係の競合を解決するだけでなく、Rubyアプリケーションのデプロイメントプロセスを容易にすることができます。 RVMは、「名前付きジェムセット」などの機能を提供します。これにより、Rubyアプリケーションの依存関係をすばやく簡単に指定できます。さらに、Rubyはgemバージョンの共有キャッシュを使用するため、Rubyデプロイメントで使用される全体的なディスク容量が削減されます。最後に、RVMは、指定されたすべての依存関係が完全にユーザースペース内に含まれるように機能し、セキュリティリスクを軽減し、rootユーザーとしてアプリケーションを実行する必要をなくします。

結論

上記の記事は、RVMが提供する機能のほんの一部にすぎません。 RVMを使用してアプリケーションの環境を管理することで、デプロイメントの懸念を緩和し、アップグレードの問題を軽減し、Rubyアプリケーションの信頼できる依存関係のセットを作成できます。 RVMは、Bundlerなどのツールと組み合わせることで、Rubyアプリケーションのインストール、実行、および管理をシンプルで合理化されたプロセスにします。

Atlantic.Net

シンプルで合理化されたプロセスも提供する、ワンクリックのVPSホストインストールアプリケーションを多数提供しています。 WordPress、cPanelホスティング、Dockerホスティングなどの人気のあるアプリケーションがたくさんあります。


Linux
  1. お気に入りのLinuxパッケージマネージャーは何ですか?

  2. 結婚記念日GNOME:あなたの好きなバージョンは何ですか?

  3. お気に入りのLinuxウィンドウマネージャーは何ですか?

  1. RVMを使用してCentOS、RedHatにRuby 1.9.3(または複数のRubyバージョン)をインストールします

  2. Ubuntu18.04にRubyをインストールする方法

  3. LinuxでのFlex開発、フリー環境は何がいい?

  1. テクニカルマーケティングマネージャーとは何ですか?

  2. どのバージョンのUbuntuがCD-Rに適合しますか?

  3. LVEマネージャーとは何ですか?なぜそれが役立つのですか?