docs community blog github
Edit

Paketo Buildpacks で Ruby アプリケーションをビルドする

This documentation explains how to use the Paketo Ruby Buildpack to build applications for several common use-cases. For more in-depth description of the buildpack’s behavior and configuration see the Paketo Ruby Buildpack Reference documentation.

サンプルアプリをビルドする

pack コマンドを使って、PHP Paketo Buildpack でサンプルアプリをビルドします。

git clone <https://github.com/paketo-buildpacks/samples>
cd samples/ruby/puma
pack build my-app --buildpack gcr.io/paketo-buildpacks/ruby \
  --builder paketobuildpacks/builder:base
copy to clipboard
Copied!

アプリケーションの実行方法は README ファイル を参照してください。

注意:この例では Paketo Base ビルダーを使っていますが、Ruby Paketo Buildpack は Paketo Full ビルダーと互換性があります

Ruby のインストールするバージョンを指定する

Ruby Paketo Buildpack では、デプロイするときに使用する CRuby のバージョンを、環境変数 BP_MRI_VERSIONGemfile で指定できます。 指定できるバージョンは、使用する Buildpack の対応しているバージョンだけです。 Ruby Paketo Buildpack の使用できる CRuby のバージョンについては、Ruby Paketo Buildpack のリリースノート を参照してください。

MRI Cloud Native Buildpack v1.0.0 から、buildpack.yml で CRuby のバージョンを指定する機能は非推奨になりました。

バージョンを指定する場所の優先順位は BP_MRI_VERSION, Gemfile の順になっています。

CRuby のバージョンを指定しなかった場合は Buildpack の buildpack.toml に指定された初期値が使われます。

環境変数 BP_MRI_VERSION を使用する

アプリケーションをデプロイするときに CRuby v2.7.1 を使うようにするには、pack build コマンドのフラグ --env で環境変数 BP_MRI_VERSION を指定するか、project.toml へ記述します。

BP_MRI_VERSION="2.7.1"
copy to clipboard
Copied!

Gemfile を使用する

アプリケーションをデプロイするときに CRuby v2.7.1 を使うようにするには、Gemfile へ次のように記述します。

source 'https://rubygems.org'

ruby '~> 2.7.1'
copy to clipboard
Copied!

非推奨:buildpack.yml を使用する

MRI Cloud Native Buildpack v1.0.0 から、buildpack.yml で CRuby のバージョンを指定する機能は非推奨になりました。 環境変数 BP_MRI_VERSION を使用してください。

Bundler のインストールするバージョンを指定する

Ruby Paketo Buildpack ではデプロイするときに使用する Bundler のバージョンを指定できます。 バージョンを指定するには環境変数 BP_BUNDLER_VERSIONGemfile.lock を使用します。 指定できるバージョンは、使用する Buildpack の対応しているバージョンだけです。 使用できる Bundler のバージョンは Bundler Cloud Native Buildpack のリリースノート で確認してください。

Bundler Cloud Native Buildpack v1.0.0 から、buildpack.yml で Bundler のバージョンを指定する機能は非推奨になりました。

バージョンを指定する場所の優先順位は BP_BUNDLER_VERSION, Gemfile.lock の順になっています。

Bundler のバージョンを指定しなかった場合は、Bundler Cloud Native Buildpack の buildpack.toml に指定された初期値が使われます。

環境変数 BP_BUNDLER_VERSION を使用する

Buildpack がアプリケーションをデプロイするときに Bundler v2.1.4 を使うようにするには、pack build コマンドのフラグ --env で環境変数 BP_MRI_VERSION を指定するか、project.toml へ記述します。

BP_BUNDLER_VERSION="2.1.4"
copy to clipboard
Copied!

Gemfile.lock を使用する

アプリケーションをデプロイするときに Bundler v2.1.4 を使うようにするには、Bundler v2.1.4 で bundle install を実行して生成された Gemfile.lock をソースコードリポジトリに登録します。

BUNDLED WITH
   2.1.4
copy to clipboard
Copied!

非推奨:buildpack.yml を使用する

Bundler Cloud Native Buildpack v1.0.0 から、buildpack.yml で Bundler のバージョンを指定する機能は非推奨になりました。 環境変数 BP_BUNDLER_VERSION を使用してください。

オフライン環境でアプリケーションをビルドする

オフライン環境でアプリケーションをビルドするには、cache_path に必要な .gem ファイルを配置しておかなければなりません。 Bundler は bundle package コマンドにより、vendor/cache のようなディレクトリへ必要な gem ファイルを複製します。 Buildpack は Bundler がオンラインの RubyGems よりキャッシュを優先するよう、bundle install --local を実行します。

Rake タスクを実行するコンテナイメージをビルドする

Ruby Paketo Buildpack は起動コマンドとして Rake タスクを実行するコンテナイメージをビルドできます。 ソースコードに Rakefile を入れるだけです。 実行するのはデフォルトタスクです。 具体例は サンプルアプリ を参照してください。

特定の Rake タスクを実行する

デフォルトタスク以外の Rake タスクを実行したいときは、Procfile へ次のように起動コマンドを記述します。

web: bundle exec rake non_default
copy to clipboard
Copied!

コンテナイメージを実行するときにデフォルトタスク以外の Rake タスクを指定するには、エントリポイントに launcher を指定して、実行したい Rake コマンドを指定します。

docker run --entrypoint launcher my-rake-app bundle exec rake non_default
copy to clipboard
Copied!

Web サーバーの背後で Ruby アプリケーションを実行する

Ruby Paketo Buildpack は Ruby アプリケーションの前面で実行する Web サーバーを自動的に検出し、構成できます。 Buildpack が対応している Web サーバーは次の通りです。

  • Passenger
  • Puma
  • Rackup
  • Thin
  • Unicorn

Buildpack の実行する Web サーバーを指定するには、 Gemfile へ記述します。

Rackup を使用するときは次のように記述します。

gem 'rack'
copy to clipboard
Copied!

Rails アプリケーションをビルドする

Ruby Paketo Buildpack はアセットの事前コンパイルが必要な Rails アプリケーションに対応しています。 対応している Rails のバージョンは 5.0 以上です。

アセットの事前コンパイル機能を使用するには次のように構成します。

  1. アセットファイルを app/assets ディレクトリへ配置します
  2. Gemfilerails gem を追加します
Edit

Last modified: September 13, 2021