web-dev-qa-db-ja.com

'rubygems'が必要

私はRubyこの行のコード(たとえば http://www.sinatrarb.com/ )のサンプルを多数見ました。)これの目的は何ですか?

# require 'rubygems'
require 'sinatra'
get '/hi' do
  "Hello world!"
end

すべての場合において、コードはこの行がなくても機能します。

35
demas

それはしばしば不必要です。ただし、gemコマンドを使用して、特定のgemの特定のバージョンを要求することができます。

https://guides.rubygems.org/patterns/#requiring-rubygems

17
Jakob Kruse

require 'rubygems'は、Ruby loadpathを調整して、LoadError: no such file to load -- sinatra

Rubygems-1.3.6ドキュメントから:

RubyGemsが必要な場合、Kernel#requireは、オンデマンドでgemをロードできる独自のものに置き換えられます。

Require 'x'を呼び出すと、次のようになります。

  • ファイルが既存のRuby loadpathからロードできる場合、そうです。

  • それ以外の場合、インストールされたgemは一致するファイルを検索します。 gem 'y'で見つかった場合、そのgemがアクティブ化されます(ロードパスに追加されます)。

通常、そのファイルが既にロードされている場合はfalseを返す機能が必要です。

これが必要な理由を理解するには、 Kernel#require のドキュメントを参照してください。

24
Carmine Paolino

以前の(そして正解)への追加として:Ruby 1.9以降はRubyGemsが組み込まれているため、実際にrequire 'rubygems'ここにソース

13
geekazoid