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.beta
は2.2.beta.12
などのプレリリースバージョンに一致します。~> 0
は>= 0.0
および< 1.0
と同じです。
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
を呼び出す必要があります。
一部の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を使用しないでください。
ファイルシステムから直接展開された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'