Bundler による gem の管理
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2022年03月24日(木)
Bundler は、Ruby プロジェクトのデフォルトの gem 依存関係マネージャーです。 Bundler は Heroku で gem を管理する方法です。
ネイティブの依存関係があるものも含め、ほとんどすべての gem を Bundler を使用してインストールできます。Heroku にインストールできない特定の gem がある場合は、サポートチケットを送信してください。
Bundler の使用
使用するには、次のようにして Bundler をインストールします。
$ gem install bundler
Gemfile
という名前のファイルをアプリのルートに作成します。このファイルでは、アプリを実行するために必要な gem を指定します。
source "https://rubygems.org"
gem 'sinatra', '1.0'
このファイルはアプリの一部であるため、Git リポジトリに追加する必要があります。.bundle
ディレクトリを .gitignore
ファイルに追加する必要もあります。 Gemfile
を追加すると、他の開発者にとって、アプリの実行準備ができた状態に各自の環境を整えることが容易になります。
$ bundle install -j4
これにより、Gemfile
で指定されたすべての gem が、その依存関係も含めてアプリケーションで利用できることが保証されます。 bundle install
を実行すると Gemfile.lock
ファイルも生成され、これを Git リポジトリに追加する必要があります。Gemfile.lock
によって、Heroku にデプロイされている gem のバージョンが、使用中の開発用マシンにローカルでインストールされているバージョンと一致することが保証されます。フラグ -j4
は、すべての依存関係をインストールするために 4 つの並列ジョブを使用することを指定します。この機能は Bundler 1.5.0 で導入されました。
Gemfile
の platforms
セクションに mswin
や mingw
などの Windows エントリが含まれている場合、Gemfile.lock
ファイルは無視されます。
Heroku ではさらに、そのファイルを使用して、アプリケーションの依存関係を自動的に解決およびインストールします。必要なのは、そのファイルをプッシュすることのみです。
-----> Heroku receiving push
-----> Sinatra app detected
-----> Gemfile detected, running Bundler version 1.5.2
Unresolved dependencies detected; Installing...
Using rack (1.2.1)
Using sinatra (1.0)
Using bundler (1.0.0)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
Your bundle was installed to `.bundle/gems`
Compiled slug size is 10.7MB
-----> Launching.... done
gem とグループの指定
gem Bundler の使用法として推奨されるのは、アプリが依存するすべての gem を漏れなくバンドルするというものです。 これには、使用するフレームワーク (Rails、Sinatra など) と、使用するデータベースコネクターが含まれます。
Rails やその他の依存関係をバンドルすると、slug のサイズが数 MB 単位で増加します。 依存関係の管理が大幅に簡素化され、Rails の任意のバージョンを使用できる柔軟性が得られることを考えれば、slug サイズの増加は十分に価値のあるトレードオフです。
インストールしない gem のグループを指定するには、BUNDLE_WITHOUT
環境設定を使用できます。
$ heroku config:set BUNDLE_WITHOUT="development:test"
フレームワーク
Rails 3 での Bundler の使用
Rails 3 は Bundler をベースに構築されています。したがって、セットアップは一切不要であり、Gemfile
で指定されたすべての gem はアプリで使用する準備ができています。
Rails 2.3.X での Bundler の使用
こちらの手順に従ってください。 すべての config.gem
行を環境設定ファイルから忘れずに削除してください。 アプリ用の適切なデータベース gem を指定することも忘れないでください。
gem "pg", :group => :production
gem "sqlite3-ruby", :group => :development
コードをアプリケーションに追加したら、次のように実行します。
$ bundle install
これで、Bundler を使用してアプリが実行されるようになりました。
Sinatra (または他の Rack アプリ) からの Bundler の使用
Sinatra やその他のフレームワークで Bundler を使用する方法については、Gem Bundler から入手できる一連のドキュメントを参照してください。
Bundler のバージョン
Bundler のさまざまなバージョンの使用については、「Bundler Version」(Bundler のバージョン) を参照してください。