112

私はRubyが初めてで、次の概念に頭を悩ませようとしています:バンドラー、RVM、宝石、RubyGems、宝石セット、システムの摩擦で、混乱しています。

Ubuntuの最新バージョンの新規インストールでこれらすべてを管理する方法の「ベストプラクティス」について誰か説明してもらえますか? 何をインストールし、どのように使用すればよいですか?

することはsudo apt-get install rubyお勧めできないと思いますが、よくわかりません。「他のすべてのRubyのもの」に加えて、自分のシステムで試しました。それは私の混乱を増すだけです。Rails について話しているのではなく、通常の Ruby gem (Vagrant、Chef、スクリプトなど) について話しているだけです。

4

2 に答える 2

209

前の回答によると、これはカバーすることが非常に多いため、これを簡単な紹介と考えてください。

gemは、Ruby ライブラリをパッケージ化する方法です。それらは Ruby にとって、Java にとっての jar と同じです。gem ファイル内には、Ruby コード (.rb ファイル) だけでなく、テストや、名前、依存関係、バージョン ( gemspec ) など、gem 自体に関する情報を提供する特別なファイルもあります。どの Ruby プロジェクトでも、依存関係を宣言するだけでよいGemfileを介して、必要な gem を定義できます。Rubygemsはパッケージ マネージャーの名前で、パッケージのインストールに使用されるツールです (gems はパッケージ自体です)。Rubygems は Ruby の一部になりました。

Bundlerは、gem の管理を耐えやすくするものです。Gemfile に基づいて、 bundle installを使用して bundler を呼び出すだけで、必要なすべての gem がダウンロードおよびインストールされます。標準の gem コマンドを使用すると、 を使用してそれぞれを手動でインストールする必要がありますgem install <gem_name>。Bundler は Ruby の一部ではありません (それ自体が gem としてパッケージ化されています) が、ほとんどのアプリケーションにとって「デファクト スタンダード」です (実際には、これを使用していない人は多くなく、使用しない正当な理由はありません)。

RVMは、1 台のマシンに複数のバージョンの Ruby をインストールし、必要に応じて切り替えることができるツールです。これは、Ruby 1.8 と 1.9 の両方、または「MRI」(デフォルトの実装である Matz の Ruby) と代替 (JRuby や Rubinius など) をインストールするために使用できます。この分野では RVM だけではないことに注意してください。たとえばrbenvを参照してください。

RVMのgemsetは、特定のコンテキスト (通常はプロジェクト) に固有の gem のセットです。これは、たとえば、それぞれが独自の gem セットを持つさまざまなアプリケーションを開発していて、それらを分けておきたい場合に便利です。

system Rubyは、RVM を使用している場合、マシンにインストールされている (つまり、RVM 経由ではなく) Ruby のバージョンです。

始めたばかりの場合は、gem と bundler に興味があります。今のところ、RVM と gemsets は脇に置いておいてください。

于 2013-03-23T12:16:40.787 に答える
1

1つの質問で、StackOverflowの範囲内よりも多くの情報を求めています。それをすべてカバーするには本が必要です。

Ubuntuでは、Gemを「システム」バージョンのRubyに簡単にインストールおよび削除できるため、を介して通常のgemをインストールおよび削除することに慣れてsudoください。(Mac OSでは、AppleがRubyを独自にバンドルしているので、別のアドバイスをします。Rubyをいじるのは良い考えではありません。)次に、宝石のアイデア全体がどのように機能するかを知っていて、複数が必要だとわかっている場合システムにRubyバージョンがあります。「rbenv」または「RVM」を試して、サンドボックスに1つまたは2つのバージョンをインストールしてください。

Linuxを使用すると、ディストリビューションを介してRubyを簡単に追加/削除できますが、ディストリビューションメンテナーがパッケージ化したバージョンに制限されているため、通常はソースからインストールします。しかし、開発、テスト、本番システム用にRubyのいくつかのバージョンを管理する場合、それは苦痛です。そのため、rbenvRVMが発明されました。これらは、プログラミングに集中できるように、汚い詳細を処理します。

私はrbenvRVMの両方を使用しており、過去6か月ほどrbenvを使用しており、良好な結果が得られています。私が好きなRVMよりも複雑ではありません。どちらの場合も、Gemsの個別のセットを使用して、さまざまなバージョンを簡単にインストールできます。必要に応じて、さまざまなバージョンのRubyをさまざまなターミナルウィンドウで開くことができるため、互換性のテストが簡単になります。

デバッグ時のルール1は、一度に1つずつ変更を加えることです。これは、プログラミングの学習や新しい言語の学習に当てはまります。気を散らさないでください、ただそれを単純にしてください。

于 2013-03-23T11:56:25.827 に答える