4

ruby スクリプトの先頭にある require/include ステートメントが何をしているのかについて、基本的な理解があると思います。

require 'rspec'

これらのステートメントは、Google で検索して関連する結果を簡単に見つけることができます。しかし、時々、次のような宝石のステートメントを見たことがあります

gem 'rspec'

この行は何をしますか?

4

3 に答える 3

4

requireRubygems より前の の元の動作は、$LOAD_FILES変数にリストされているすべてのディレクトリでファイルを検索し、一致する最初のディレクトリをロードすることでした。一致するファイルが見つからない場合requireLoadError.

Rubygems はこのプロセスを変更します。Rubygems を使用すると、以前と同様にrequire既存のものを検索し$LOAD_PATHますが、一致するファイルが見つからない場合、Rubygems はマシンにインストールされている gem を検索して一致するものを探します。一致するファイルを含む gem が見つかった場合、その gem がアクティブになり、$LOAD_PATH検索が繰り返されます。gem をアクティブ化する主な効果は、gemslibディレクトリがロード パスに追加されることです。このようにして、ロード パスの 2 回目の検索で、必要なファイルが見つかります。

通常、これは、インストールした gem の最新バージョンがアクティブ化されることを意味します。場合によっては、別のバージョンの gem を使用したい場合があり、そのためにgemメソッドを使用できます。このgemメソッドは gem をアクティブにし、必要なバージョンを指定できますが、ファイルは必要ありません。後で必要なファイルが必要になったときに、指定した gem バージョンからファイルを取得します。

于 2013-04-10T05:49:19.897 に答える
-1

Ruby では、gem はすぐに使用できる機能を備えたパッケージです (他のプログラミング言語のライブラリとして)。

Ruby プロジェクトで使用する gem は、「bundler」というツールを使用して簡単に管理できます。Google で検索するだけです。投稿したコードのスニペットは、プロジェクト用に指定したすべてのライブラリをインストールおよび更新するためにバンドラーが使用する仕様ファイルの一部です。

Ruby on Rails を開発している場合、gem を使用してバンドラーで管理することは非常に一般的であり、ベスト プラクティスと言えます。

レールなどのデフォルトの機能を拡張し、すぐに使用できる便利なライブラリがたくさんあるため、Gem は非常に優れています。

gem のリストについては、rubygems.org を参照してください。

于 2013-04-10T05:34:49.750 に答える