Gemfileについて

詳細

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

Gemfile

GemfileはRubyGemサーバのURLとして、少なくとも1つのGem供給元(source)を必要とします。 bundle initを実行することで、デフォルトでrubygems.orgをsourceとしたGemfileを作成します。 可能であれば、httpsを使用してrubygems.orgサーバーへの接続をSSLによって証明されたものにしてください。

source 'https://rubygems.org'

Bundler 1.7では推奨されませんが、複数のグローバルなsource行を追加することが可能です。 それらが最初から最後まで検索されることになります。

一部のGemのsource(供給元)は、ユーザー名とパスワードを必要とします。 bundle configを使用して、ユーザー名とパスワードをそれを必要とする提供元のために設定してください。 このコマンドはGemfileをインストールする各コンピューターに対して実行しなければいけませんが、 この認証情報はプレーンテキストで、バージョン管理に含めることで保持することが可能です。

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

Gemfury企業アカウントのような一部の供給元では、sourceのURLの一部としてGemfile内により簡易的に認証情報を含めることが可能です。

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

sourceのURLの認証情報は、configによって設定されたものよりも優先されます。

必要なGemをバージョン番号を含めて宣言します。 RubyGemsが依存性指定でサポートしているものと同じ文法を使用してバージョンを指定します。

gem 'nokogiri'
gem 'rails', '3.0.0.beta3'
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のようなプレリリースのバージョンにマッチします。

RubyGemsのバージョン指定について

もし、Gemの主となるファイルがGem名と異なる場合は、下記のように指定します。

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

:require => falseの指定をすることで、Gemをrequireしないようにしますが、 インストールと依存性の保持は行われます。

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

GemfileのGemmをrequireするには、アプリケーション内でBundler.requireを呼び出す必要があります。

Bundler.requireの詳細

もし、プライベートなGemサーバーから、一部のGemを取得する必要がある場合は、 それらのGemのためにデフォルトのsourceを上書きすることが可能です。 単一のGemであれば、単に:sourceオプションをそのGemに対して使用するだけです。

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のどちらかで指定されます。

また、正当な1つ以上のGemが含まれてさえいれば、Gitリポジトリも正当なgem sourceです。 :tag:branch:refで何をチェックアウトするか指定します。 デフォルトはmaster(マスター)ブランチになります。

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

もし、gitリポジトリが.gemspecファイルを含まない場合、 Bundlerは依存性、実行可能ファイル、またはC拡張の無い、シンプルなものを1つ作成します。 これは単一のGemとして動作するかもしれませんが、他のものに対して動作しません。 .gemspecが無いのであれば、これをgitから使用すべきでは無いでしょう。

もしファイルシステムからパッケージ化されていないGemのディレクトリを使用したいのであれば、 単純に:pathオプションに、gemのファイルが含まれているディレクトリのパスを指定します。

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

依存関係をグループ化する事が可能です。 グループは、インストール時に無視(--withoutを使用して)、 または一度にrequire(Bundler.requireを使用して)させることが可能です。

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

group :test do
  gem 'rspec'
end

グループの詳細

rubyを指定することで、Gemfile内で必要とされる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'

 Back to top

© 2010 - 2017 STUDIO KINGDOM