Docs header transparent bg

詳細

Gemfileで使用可能なすべてのオプションとその使用方法については、マニュアルを参照してください。

Gemfileマニュアル

Gemfile

Gemfileには、RubyGemsサーバーのURL形式で、少なくとも1つのgemソースが必要です。bundle initを実行して、デフォルトのrubygems.orgソースを含むGemfileを生成します。可能であれば、httpsを使用してください。これにより、rubygems.orgサーバーへの接続がSSLで検証されます。

source 'https://rubygems.org'

# Gems here

別のソースからgemを取得する場合は、追加のソースをブロックで囲んでください。複数のグローバルソース行はセキュリティリスクであり、意図しないソースからgemがインストールされる可能性があるため、使用しないでください。

source 'https://rubygems.org'

# Gems here

source 'https://gems.example.com' do
  # Gems from the alternative source here
end

一部のgemソースには、ユーザー名とパスワードが必要です。必要なソースのユーザー名とパスワードを設定するには、bundle configを使用します。このコマンドは、Gemfileをインストールする各コンピューターで一度実行する必要がありますが、これにより、資格情報がバージョン管理にプレーンテキストで保存されるのを防ぎます。

$ bundle config https://gems.example.com/ user:password

企業のGemfuryアカウントなど、一部のソースでは、ソースURLの一部として資格情報をGemfileに含める方が簡単な場合があります。

source "https://user:password@gems.example.com"

ソースURL内の資格情報は、configを使用して設定された資格情報よりも優先されます。必要なgemをバージョン番号を含めて宣言します。RubyGemsが依存関係に使用するのと同じ構文を使用してバージョンを指定します。

gem 'nokogiri'
gem 'rails', '5.0.0'
gem 'rack',  '>=1.0'
gem 'thin',  '~>1.1'

>= 1.0などのほとんどのバージョン指定子は、自明です。指定子~>には特別な意味があり、例で示すのが最適です。~> 2.0.3>= 2.0.3および< 2.1と同じです。~> 2.1>= 2.1および< 3.0と同じです。~> 2.2.beta2.2.beta.12などのプレリリースバージョンに一致します。~> 0>= 0.0および< 1.0と同じです。

RubyGemsバージョン指定子

gemのメインファイルがgem名と異なる場合は、その読み込み方法を指定します。

gem 'rack-cache', :require => 'rack/cache'
gem 'sqlite3'

Bundlerがgemを読み込まないようにするには、:require => falseを指定します。ただし、gemはインストールされ、依存関係は維持されます。

gem 'rspec', :require => false
gem 'sqlite3'

Gemfileでgemを読み込むには、アプリケーションでBundler.requireを呼び出す必要があります。

詳細:Bundler.require

一部のgemをプライベートgemサーバーから取得する必要がある場合、これらのgemについては、このデフォルトソースをオーバーライドできます。単一のgemを含むgemサーバーの場合、そのgemで:sourceオプションを使用するのが最も簡単です。

gem 'my_gem', '1.0', :source => 'https://gems.example.com'

複数のgemが同じサーバーから取得される場合は、sourceブロックを使用してそれらをグループ化できます。

source 'https://gems.example.com' do
  gem 'my_gem', '1.0'
  gem 'another_gem', '1.2.1'
end

gemサーバーの資格情報は、上記のようにURLまたはbundle configで指定できます。Gitリポジトリも、有効なgemを1つ以上含む限り、有効なgemソースです。:tag:branch、または:refを使用してチェックアウトするものを指定します。デフォルトはmasterブランチです。

gem 'nokogiri', :git => 'https://github.com/tenderlove/nokogiri.git', :branch => '1.4'

Gitリポジトリに.gemspecファイルが含まれていない場合、Bundlerは依存関係、実行ファイル、またはC拡張機能のない単純なファイルを作成します。これは単純なgemでは機能するかもしれませんが、他のgemでは機能しません。.gemspecがない場合は、おそらくGitからgemを使用しないでください。

詳細:Git

ファイルシステムから直接展開されたgemを使用する場合は、:pathオプションにgemファイルを含むパスを設定するだけです。

gem 'extracted_library', :path => './vendor/extracted_library'

ファイルシステムから直接複数のローカルgemを使用する場合は、gemファイルを含むパスにグローバルpathオプションを設定できます。これにより、サブディレクトリからgemspecファイルが自動的に読み込まれます。

path 'components' do
  gem 'admin_ui'
  gem 'public_ui'
end

依存関係はグループに配置できます。グループはインストール時に無視できます(--withoutを使用)または一度にすべて必要です(Bundler.requireを使用)。

gem 'wirble', :group => :development
gem 'debugger', :group => [:development, :test]

group :test do
  gem 'rspec'
end

詳細:グループ

Gemfileで必要なRubyのバージョンをrubyで指定できます。Gemfileが異なるRubyバージョンでロードされた場合、Bundlerは説明付きの例外を発生させます。

ruby '1.9.3'

これは、このアプリが1.9.3とABI互換性のあるRuby VMへの依存関係を持っていることを意味します。バージョンチェックが一致しない場合、Bundlerは例外を発生させます。これにより、実行中のコードが一致することが保証されます。:engineおよび:engine_versionオプションを使用して、より詳細に指定できます。

ruby '1.9.3', :engine => 'jruby', :engine_version => '1.6.7'

詳細:Rubyディレクティブ

エラーを見つけた場合、または何かが不足していることに気づいた場合は、GitHubでこのドキュメントを編集してください