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:[email protected]"
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
のようなプレリリースのバージョンにマッチします。
もし、Gemの主となるファイルがGem名と異なる場合は、下記のように指定します。
gem 'rspec', :require => 'spec'
gem 'sqlite3'
:require => false
の指定をすることで、Gemをrequireしないようにしますが、
インストールと依存性の保持は行われます。
gem 'rspec', :require => false
gem 'sqlite3'
Gemfile
のGemmを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'
© 2010 - 2017 STUDIO KINGDOM