ruby スクリプトの先頭にある require/include ステートメントが何をしているのかについて、基本的な理解があると思います。
require 'rspec'
これらのステートメントは、Google で検索して関連する結果を簡単に見つけることができます。しかし、時々、次のような宝石のステートメントを見たことがあります
gem 'rspec'
この行は何をしますか?
require
Rubygems より前の の元の動作は、$LOAD_FILES
変数にリストされているすべてのディレクトリでファイルを検索し、一致する最初のディレクトリをロードすることでした。一致するファイルが見つからない場合require
、LoadError
.
Rubygems はこのプロセスを変更します。Rubygems を使用すると、以前と同様にrequire
既存のものを検索し$LOAD_PATH
ますが、一致するファイルが見つからない場合、Rubygems はマシンにインストールされている gem を検索して一致するものを探します。一致するファイルを含む gem が見つかった場合、その gem がアクティブになり、$LOAD_PATH
検索が繰り返されます。gem をアクティブ化する主な効果は、gemslib
ディレクトリがロード パスに追加されることです。このようにして、ロード パスの 2 回目の検索で、必要なファイルが見つかります。
通常、これは、インストールした gem の最新バージョンがアクティブ化されることを意味します。場合によっては、別のバージョンの gem を使用したい場合があり、そのためにgem
メソッドを使用できます。このgem
メソッドは gem をアクティブにし、必要なバージョンを指定できますが、ファイルは必要ありません。後で必要なファイルが必要になったときに、指定した gem バージョンからファイルを取得します。
Ruby では、gem はすぐに使用できる機能を備えたパッケージです (他のプログラミング言語のライブラリとして)。
Ruby プロジェクトで使用する gem は、「bundler」というツールを使用して簡単に管理できます。Google で検索するだけです。投稿したコードのスニペットは、プロジェクト用に指定したすべてのライブラリをインストールおよび更新するためにバンドラーが使用する仕様ファイルの一部です。
Ruby on Rails を開発している場合、gem を使用してバンドラーで管理することは非常に一般的であり、ベスト プラクティスと言えます。
レールなどのデフォルトの機能を拡張し、すぐに使用できる便利なライブラリがたくさんあるため、Gem は非常に優れています。
gem のリストについては、rubygems.org を参照してください。