2.8. Ruby


2.8.1. 概要

OpenShift Online には、Ruby アプリケーションのビルドおよび実行用に S2I が有効な Ruby イメージが含まれています。Ruby S2I ビルダーイメージは、必要な依存関係を使用してアプリケーションソースを組み立てて、Ruby アプリケーションを含む新規イメージを作成します。結果として生成されるイメージは、OpenShift Online または Docker のいずれかで実行できます。

2.8.2. バージョン

現時点で、OpenShift Online は Ruby のバージョン 2.02.2、および 2.3 を提供しています。

2.8.3. イメージ

RHEL 7 イメージは、Red Hat レジストリーから入手できます。

$ docker pull registry.access.redhat.com/openshift3/ruby-20-rhel7
$ docker pull registry.access.redhat.com/rhscl/ruby-22-rhel7
$ docker pull registry.access.redhat.com/rhscl/ruby-23-rhel7

このイメージは、ruby イメージストリームで使用することができます。

2.8.4. ビルドプロセス

S2I は、ソースコードをコンテナーに挿入し、コンテナーにソースコードの実行を準備をさせることで、実行準備が整ったイメージを生成します。S2I では、以下の手順を実行します。

  1. ビルダーイメージからコンテナーを起動します。
  2. アプリケーションソースをダウンロードします。
  3. ビルダーイメージコンテナーにスクリプトとアプリケーションソースをストリーミングします。
  4. (ビルダーイメージから) assemble スクリプトを実行します。
  5. 最終的なイメージを保存します。

ビルドプロセスの詳細のまとめについては、「S2I ビルドプロセス」を参照してください。

2.8.5. 設定

Ruby イメージは多数の環境変数を複数サポートし、環境変数を設定することで Ruby のラインタイムの設定や動作を制御できます。

イメージの一部としてこれらの環境変数を設定するには、ソースコードリポジトリーの中にある .s2i/environment ファイル に配置するか、ビルド設定の sourceStrategy 定義の環境セクションに定義します。

また、新規アプリケーションの作成時に既存のイメージを使用するか、デプロイメント設定などの既存のオブジェクトの環境変数を更新して環境変数を設定できます。

注記

ビルドの動作を制御する環境変数は、s2i ビルド設定または .s2i/environment ファイルの一部として設定して、ビルドの手順で利用できるようにする必要があります。

表2.10 Ruby 環境変数
変数名説明

RACK_ENV

この変数は、Ruby アプリケーションがデプロイされる環境を指定します (例: productiondevelopment、または test)。それぞれのレベルでは、ロギングの省サイド、エラーページ、および ruby gem インストールの点で動作が異なります。ロギングの詳細レベル、エラーページ、Ruby gem インストールなど、レベルごとに動作が異なります。 アプリケーションのアセットは、RACK_ENVproduction に設定されている場合にのみコンパイルされます。 デフォルト値は production です。

RAILS_ENV

この変数は、Ruby on Rails アプリケーションがデプロイされる環境を指定します (例: productiondevelopment、または test)。それぞれのレベルでは、ロギングの省サイド、エラーページ、および ruby gem インストールの点で動作が異なります。アプリケーションのアセットは、RAILS_ENVproduction に設定される場合にのみコンパイルされます。この値は、デフォルトで ${RACK_ENV} に設定されます。

DISABLE_ASSET_COMPILATION

この変数は true に設定されている場合には、アセットのコンパイルプロセスを無効にします。アセットのコンパイルは、アプリケーションが実稼働環境で実行されている場合にのみ行われます。そのため、アセットがコンパイル済みの場合は、この変数を使用できます。

PUMA_MIN_THREADSPUMA_MAX_THREADS

この変数は、Puma のスレッドプールで利用可能な最小および最大スレッド数を指定します。

PUMA_WORKERS

この変数は、Puma の クラスターモード で起動されるワーカープロセスの数を示します (Puma が 3 つ以上のプロセスを実行する場合)。明示的に設定されていない場合には、デフォルトの動作で PUMA_WORKERS が、コンテナーで利用可能なメモリーや、ホスト上のコア数に適した値に設定されます。

RUBYGEM_MIRROR

ビルドプロセス時に必要な gem パッケージをダウンロードするための、カスタムの RubyGems ミラー URL を使用するようにこの変数を設定します。注意: この環境変数は、Ruby 2.2+ イメージでのみ利用可能です。

2.8.6. ホットデプロイ

ホットデプロイでは、新しい S2I ビルドを生成する必要なしに、アプリケーションに変更をすばやく加え、デプロイすることができます。このイメージでホットデプロイメントを有効にする方法は、アプリケーションの種類により異なります。

Ruby on Rails アプリケーション

Ruby on Rails アプリケーションの場合は、RAILS_ENV=development 環境変数を実行中の Pod に渡して、ビルド済みの Rails アプリケーションを実行します。既存のデプロイメント設定では、oc set env コマンドを使用してください。

$ oc set env dc/rails-app RAILS_ENV=development

他のタイプの Ruby アプリケーション (Sinatra、Padrino など)

他のタイプの Ruby アプリケーションでは、アプリケーションは実行中のコンテナー内でソースコードが変更されるたびに、サーバーを再読み込みできる gem でビルドする必要があります。これらの gem には以下が含まれます。

開発モードでアプリケーションを実行できるようにするには、選択した gem で Web サーバーを起動し、ソースコードへの変更の有無を確認するように、S2I run スクリプト を変更する必要があります。

カスタマイズした S2I run スクリプト でアプリケーションをビルドした後に、RACK_ENV=development 環境変数でイメージを実行します。たとえば、oc new-app コマンドを参照してください。oc set env コマンドを使用して、既存オブジェクトの環境変数を更新できます。

警告

このオプションは、開発またはデバッグの時にだけ使用するようにしてください。 実稼働環境でこの設定をオンにすることは推奨しません。

実行中の Pod でソースコードを変更するには、oc rsh コマンドを使用して、コンテナーに入ります。

$ oc rsh <pod_id>

実行中のコンテナーに入った後に、現在のディレクトリーを、ソースコードが配置されている /opt/app-root/src に設定します。

2.8.7. Ruby テンプレート

OpenShift Online には、サンプル Rails アプリケーションをデプロイするためのテンプレートサンプルが含まれています。このテンプレートは、ストレージの永続ボリュームを使用して PostgreSQL データベースを含む Ruby 2.3 のサンプルアプリケーションをビルドし、デプロイします。

サンプルアプリケーションは、以下のコマンドで rhscl/ruby-23-rhel7 イメージを使用してビルドし、デプロイできます。

$ oc new-app --template=rails-pgsql-persistent
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.