Heroku での Rails 4
最終更新日 2023年05月22日(月)
Table of Contents
この記事はアーカイブされています。これは更新を受け取らなくなりました。履歴の参照用にのみここに置いています。 記述がまだ正しいか、手順が今も機能するかは保証できません。 このバージョンの Rails は Ruby コアでサポートされなくなりました。 新しいアプリケーションを開始する場合は、Rails の最新リリースバージョンを使用することをお勧めします。
この記事では、Heroku で Ruby on Rails アプリケーションを実行する方法について説明します。ここでは、Heroku と Rails の両方の知識を前提としています。このどちらかを初めて使う場合は、代わりに「Heroku スターターガイド (Rails 4.x)」を参照してください。この記事では、ローカルにインストールされた Heroku CLI があることを前提としています。
Heroku ではほとんどの Rails が標準で動作しますが、このプラットフォームを最大限に活用するために実行できることがいくつかあります。これを行うには、Rails 4 アプリを Postgres に接続するように設定し、ログを STDOUT を指すように設定し、アプリケーションを本番環境でアセットの処理が有効になるように設定する必要があります。
ログ記録とアセット
Heroku ではログをストリームとして扱っており、ログを STDOUT に送信する必要があります。Rails 4 で STDOUT へのログ記録を有効にするには、rails_12factor
gem を追加できます。この gem はまた、本番環境でアセットを処理するようにアプリを設定します。この gem を追加するには、Gemfile に次の行を追加します。
gem 'rails_12factor', group: :production
この gem により、アプリケーションを 12factor アプリケーションに近付けることができます。この gem でログ記録とアセットがどのように設定されるかについての詳細は、rails_12factor の README を参照してください。この gem がアプリケーションに存在しない場合は、デプロイ中に警告が表示され、アセットとログは機能しなくなります。
Postgres
アプリケーションを Postgres データベースを使用するように設定する必要があります。新しく生成された Rails 4 アプリケーションは、SQLite を使用するように設定されます。代わりに Postgres を使用するには、Gemfile に pg
gem を追加します。
gem 'pg'
開発と本番の同等性を保持するために、開発環境と本番環境で同じデータベースを使用することをお勧めします。Gemfile から sqlite
gem を削除するか、またはそれを本番環境以外のグループに配置する必要があります。Heroku で SQLite を実行すべきではない理由に関する詳細を参照してください。これには、ローカルでの Postgres の設定に関する詳細な手順も含まれています。
Ruby バージョン
Rails 4 では、1.9.3 以上の Ruby バージョンが必要です。Heroku には、すべての新しいアプリケーションのための Ruby バージョンがデフォルトでインストールされているため、ここでは何も行う必要がありません。ただし、Gemfile 内の Ruby バージョンを設定することをお勧めします。
Ruby バージョンを宣言すると、本番環境間および開発者間の同等性が得られます。
Rails 3 アプリのアップグレード
アプリケーションを Rails 3 からアップグレードする場合は、まず、そのアプリケーションをローカルに Rails 4 で動作するようにする必要があります。この Rails 4 にアップグレードするためのガイドに従うことをお勧めします。完了したら、以前の手順に従ってください。その後、プロジェクト内に bin
ディレクトリを生成するコマンドを実行する必要があります。Rails 4 にアップグレードされたアプリのルートディレクトリで、次を実行します。
$ rake rails:update:bin
これにより、アプリケーションのルートに bin
ディレクトリが生成されます。それが .gitignore
ファイル内にないことを確認し、このディレクトリとその内容を Git にチェックインします。機能ブランチで大きな変更を行い、ステージングサーバーを使用して定期的にテストすることをお勧めします。ステージングサーバーがない場合は、既存のアプリをフォークすることによって新しいステージングサーバーを作成してステージングアプリケーションを作成できます。
デプロイ
Rails 4 アプリケーションのデプロイは、Rails 3 アプリケーションのデプロイと同じです。すべてのファイルが Git に存在することを確認します。
$ git add .
$ git commit -m 'deploying rails 4'
次に、$ heroku create
を実行して新しい Heroku アプリを作成するか、または次を実行して既存のアプリにプッシュします。
$ git push heroku master
デプロイに失敗した場合は、ビルド出力に警告やエラーがないかどうか確認します。成功したが、サイトに正しく読み込まれない場合は、ログを確認します。
$ heroku logs --tail
実行
Rails 4 アプリケーションは、Rails 3 アプリケーションと同じ方法で実行されます。ディレクトリのルートに Procfile
を作成することによって、Web プロセスを起動する方法を手動で定義できます。
web: bundle exec puma -C config/puma.rb
PORT
は、PORT
環境変数を通して各 dyno に個別に割り当てられます。Heroku では、Rails 4 アプリを Puma などの並列 Web サーバーで実行することをお勧めします。Procfile を指定しない場合、Heroku は $ rails server
コマンドで WEBrick を使用してアプリケーションを実行します。WEBrick は標準ライブラリで使用できますが、本番環境での使用はお勧めしません。最高のパフォーマンスと最も一貫したエクスペリエンスを得るには、Procfile で Web サービスを実行する方法を指定することをお勧めします。