Bundler による gem の管理
最終更新日 2024年06月28日(金)
Bundler の使用
Bundler をインストールするには、次を実行します。
コマンドの前には >
が付いており、コマンドプロンプトで実行する必要があることを示しています。コマンドを実行するときは、>
の文字をコピーしないでください。
> gem install bundler
Gemfile
という名前のファイルをアプリのルートに作成します。このファイルでは、アプリを実行するために必要な gem を指定します。
source "https://rubygems.org"
gem 'sinatra', '4.0'
このファイルはアプリの一部であるため、Git リポジトリに追加します。また、.bundle
ディレクトリを .gitignore
ファイルに追加します。Gemfile
を追加すると、他の開発者は簡単に各自の環境をアプリを実行できる状態に整えることができます。
> bundle install
このコマンドにより、Gemfile
で指定されているすべての gem がアプリケーションで利用できることが保証されます。bundle install
を実行すると Gemfile.lock
も生成され、これを Git リポジトリに追加する必要があります。Gemfile.lock
によって、Heroku にデプロイされている gem のバージョンが、使用中の開発用マシンにローカルでインストールされているバージョンと一致することが保証されます。
Gemfile.lock
で 2.2 以前の Bundler のバージョンが指定されており、Gemfile.lock
の PLATFORMS
セクションに mswin
や mingw
などの Windows エントリが含まれている場合、Heroku は Gemfile.lock
ファイルを無視します。Bundler 2.2 以降にアップグレードすることをお勧めします。
Bundler 2.2 以降での Windows サポート
Heroku は Windows で開発されたアプリケーションのデプロイをサポートしていますが、本番 Dyno は別のオペレーティングシステムで実行されます)。Heroku の本番環境アプリケーションで、Windows マシンでローカル開発用に使用しているのと同じバージョンの gem がインストールされるようにするには、アプリケーションを Bundler 2.2 以降に更新することをお勧めします。次のコマンドを実行して、Bundler のバージョンをアップグレードできます。
> gem install bundler
> bundle update --bundler
> bundle lock --add-platform ruby
> bundle lock --add-platform x86_64-linux
> bundle install
> git add Gemfile.lock
> git commit -m "Upgrade bundler"
これらのコマンドを実行すると、Bundler 2.2 以降を使用する Windows アプリケーションは、Bundler の複数のプラットフォームのサポートを利用して適切なバージョンを見つけてインストールするようになります。
Bundler 2.2 以前での Windows サポート
アプリケーションが Bundler 2.2以降にアップグレードできない場合、デプロイ時に Gemfile.lock
ファイルは削除され再生成されます。この動作の詳細は、Ruby buildpack の GitHub リポジトリを参照してください。