Deep-dive on the Next Gen Platform. Join the Webinar!

Skip Navigation
Show nav
Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
    • .NET
  • ドキュメント
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log inorSign up
Hide categories

Categories

  • Heroku のアーキテクチャ
    • Dyno (アプリコンテナ)
      • Dyno Management
      • Dyno Concepts
      • Dyno Behavior
      • Dyno Reference
      • Dyno Troubleshooting
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • Developer Tools
    • コマンドライン
    • Heroku VS Code Extension
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリーとインテグレーション
    • 継続的統合
  • 言語サポート
    • Node.js
      • Working with Node.js
      • Troubleshooting Node.js Apps
      • Node.js Behavior in Heroku
    • Ruby
      • Rails のサポート
      • Bundler の使用
      • Working with Ruby
      • Ruby Behavior in Heroku
      • Troubleshooting Ruby Apps
    • Python
      • Working with Python
      • Python でのバックグランドジョブ
      • Python Behavior in Heroku
      • Django の使用
    • Java
      • Java Behavior in Heroku
      • Working with Java
      • Maven の使用
      • Spring Boot の使用
      • Troubleshooting Java Apps
    • PHP
      • PHP Behavior in Heroku
      • Working with PHP
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
    • .NET
      • Working with .NET
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres スターターガイド
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
      • Migrating to Heroku Postgres
    • Heroku Data For Redis
    • Apache Kafka on Heroku
    • その他のデータストア
  • AI
    • Working with AI
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
      • シングルサインオン (SSO)
    • Private Space
      • インフラストラクチャネットワーキング
    • コンプライアンス
  • Heroku Enterprise
    • Enterprise Accounts
    • Enterprise Team
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Salesforce とのインテグレーション
  • 言語サポート
  • Ruby
  • Heroku スターターガイド (Ruby)

Heroku スターターガイド (Ruby)

日本語 — Switch to English

この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。

最終更新日 2024年05月16日(木)

Table of Contents

  • ​はじめに
  • ​設定する
  • ​サンプルアプリを複製する
  • ​Procfile を定義する
  • ​アプリを作成する
  • ​データベースをプロビジョニングする
  • ​アプリをデプロイする
  • ​ログを表示する
  • ​アプリをスケールする
  • ​アプリの依存関係を宣言する
  • ​アプリをローカルで実行する
  • ​ローカルの変更をプッシュする
  • ​ログ記録アドオンをプロビジョニングする
  • ​コンソールを起動する
  • ​環境設定を定義する
  • ​データベースを使う
  • ​次のステップ
  • アプリとアドオンを削除する

​はじめに

このチュートリアルを完了して、サンプル Ruby アプリを Heroku にデプロイします。

このチュートリアルでは、以下が用意されていることを前提としています。

  • 確認済みの Heroku アカウント
  • ローカルにインストールされた Ruby 3.2.4。​OS X​、​Windows​、および ​Linux​ での Ruby および Rails のインストールガイドを参照してください。
  • ローカルにインストールされた ​Bundler​。gem install bundler​ を実行します。
  • ローカルにインストールされた Postgres
  • Eco dyno プラン​のサブスクリプション (推奨)

dyno とデータベースを使用してこのチュートリアルを完了した場合、使用量のカウントに入ります。低料金プラン​を使用してこのチュートリアルを完了することをお勧めします。資格のある学生の皆様は、新しい Heroku for GitHub Students プログラム​を通じてプラットフォームクレジットを申請できます。

​設定する

Heroku CLI には、一般によく使われている Git​ というバージョン管理システムが必要です。Git がまだインストールされていない場合は、先に進む前に次の手順を完了してください。

  • ​Git のインストール
  • ​Git の初期設定

Heroku Command Line Interface​ (CLI) をインストールします。CLI は、アプリケーションの管理やスケール、アドオンのプロビジョニング、ログの表示、アプリケーションのローカル実行に使用できます。

ご使用のプラットフォーム用のインストーラをダウンロードし、実行してください。

apple ロゴ​macOS

​$ ​brew tap heroku/brew && brew install heroku

windows ロゴ​Windows

​ご使用の Windows に合ったインストーラをダウンロードします。

​64 ビット用インストーラ

​32 ビット用インストーラ

インストール後、コマンドシェルで heroku​ コマンドを使用できます。

Heroku CLI にログインするには、heroku login​ コマンドを使用します。

$ heroku login
heroku: Press any key to open up the browser to login or q to exit
 ›   Warning: If browser does not open, visit
 ›   https://cli-auth.heroku.com/auth/browser/***
heroku: Waiting for login...
Logging in... done
Logged in as me@example.com

このコマンドにより、Web ブラウザで Heroku ログインページが開きます。ブラウザですでに Heroku にログインしている場合は、ページの Log in​ (ログイン) ボタンをクリックします。

この認証は、heroku​ と git​ コマンドが正常に動作するために必要な操作です。

外部の HTTP/HTTPS サービスへの接続にプロキシを使用するファイアウォールを利用している場合は、heroku​ コマンドを実行する前に、ローカルの開発環境で HTTP_PROXY​ または HTTPS_PROXY​ 環境変数を設定​してください。

​サンプルアプリを複製する

Heroku をはじめて使う場合は、 Heroku が提供するサンプルアプリケーションを使ってこのチュートリアルを行うことをお勧めします。

デプロイする既存のアプリケーションを用意してある場合は、 代わりに​この記事​に従います。

コードのローカルバージョンを得るために、サンプルアプリケーションを複製します。以下のコマンドをローカルのコマンドシェルまたはターミナルで実行します。

$ git clone https://github.com/heroku/ruby-getting-started.git
$ cd ruby-getting-started

これで、シンプルなアプリケーションを格納した、正常な Git リポジトリを準備できました。これには Gemfile​ ファイルが含まれ、Ruby の依存関係マネージャーの bundler​ で依存関係のインストールに使用されます。

​Procfile を定義する

Procfile​ は、アプリケーションのルートディレクトリにあるテキストファイルです。このファイルを使って、アプリの起動時に実行するコマンドを明示的に宣言します。

サンプルアプリの Procfile​ は、次のようになっています。

web: bundle exec puma -C config/puma.rb

この Procfile では、単一のプロセスタイプの web​ と、その実行に必要なコマンドを宣言しています。 ここでは、web​ という名前が重要です。 これは、このプロセスタイプを Heroku の HTTP ルーティング​スタックにアタッチし、デプロイ後に Web トラフィックを受信することを宣言しています。 ここで使われているコマンドは、Puma (Web サーバー) を実行し、設定ファイルを渡しています。

Procfile には追加のプロセスタイプを含めることができます。 たとえば、キューからアイテムを取り出して処理するバックグラウンドワーカープロセス​を宣言できます。

​アプリを作成する

dyno とデータベースを使用してこのチュートリアルを完了した場合、使用量のカウントに入ります。コストを抑制するために、完了したらすぐにアプリを削除​し、データベースも削除​してください。

 

Eco にサブスクライブしている場合、アプリではデフォルトで Eco dyno が使用されます。それ以外の場合は、デフォルトで Basic dyno が使用されます。Eco dyno プランは、アカウント内のすべての Eco dyno で共有されます。これは、多数の小さいアプリを Heroku にデプロイする予定がある場合にお勧めします。詳細は、こちら​を参照してください。資格のある学生の皆様は、Heroku for GitHub Students プログラム​を通じてプラットフォームクレジットを申請できます。

Heroku でアプリを作成して、ソースコードを受け取るプラットフォームを準備します。

$ heroku create
Creating app... done, ⬢ polar-inlet-4930
http://polar-inlet-4930.herokuapp.com/ | https://git.heroku.com/polar-inlet-4930.git

アプリを作成すると、heroku​ という名前の Git リモートリポジトリも作成され、ローカルの Git リポジトリと関連付けられます。Git リモートは、他のサーバー上で稼働するリポジトリのバージョンです。アプリに関連付けられた、Heroku でホストされる特別なリモートにコードをプッシュすることにより、アプリをデプロイします。

Heroku によってランダムなアプリ名 (このケースでは polar-inlet-4930​) が生成されます。独自のアプリ名を指定​できます。

​データベースをプロビジョニングする

サンプル Rails アプリにはデータベースが必要です。Elements Marketplace​ から入手可能なアドオンの 1 つである Heroku Postgres​ データベースをプロビジョニングします。アドオンは、ログ記録、モニタリング、データベースなど、アプリケーションですぐに使える追加サービスを提供するクラウドサービスです。

essential-0​ Postgres のサイズのコストは月額 5 ドルで、分単位で課金されます​。このチュートリアルの最後で、データベースを削除​して、コストを最小限に抑えるように求められます。

$ heroku addons:create heroku-postgresql:essential-0
Creating heroku-postgresql:essential-0 on ⬢ polar-inlet-4930... ~$0.007/hour (max $5/month)
Database should be available soon
postgresql-encircled-75487 is being created in the background. The app will restart when complete...
Use heroku addons:info postgresql-encircled-75487 to check creation progress
Use heroku addons:docs heroku-postgresql to view documentation

Heroku アプリでこの Postgres データベースにアクセスできるようになりました。DATABASE_URL​環境変数は、規約によって Rails が接続する資格情報を格納します。addons​コマンドを使用して、プロビジョニングされたすべてのアドオンを確認できます。

$ heroku addons
Add-on                                          Plan         Price     State
──────────────────────────────────────────────  ───────────  ────────  ───────
heroku-postgresql (postgresql-encircled-75487)  essential-0  $5/month  created
 └─ as DATABASE

The table above shows add-ons and the attachments to the current app (polar-inlet-4930) or other apps.

​アプリをデプロイする

dyno を使用してこのチュートリアルを完了した場合、使用量のカウントに入ります。コストを抑制するために、完了したらすぐにアプリを削除​してください。

コードをデプロイします。このコマンドは、サンプルリポジトリの main​ ブランチを heroku​ リモートにプッシュし、次に Heroku にデプロイします。

$ git push heroku main
Enumerating objects: 524, done.
Counting objects: 100% (524/524), done.
Delta compression using up to 16 threads
Compressing objects: 100% (284/284), done.
Writing objects: 100% (524/524), 127.49 KiB | 63.75 MiB/s, done.
Total 524 (delta 210), reused 523 (delta 210), pack-reused 0
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Building on the Heroku-22 stack
remote: -----> Determining which buildpack to use for this app
remote:  !     Warning: Multiple default buildpacks reported the ability to handle this app. The first buildpack in the list below will be used.
remote:       Detected buildpacks: Ruby,Node.js
remote:       See https://devcenter.heroku.com/articles/buildpacks#buildpack-detect-order
remote: -----> Ruby app detected
remote: -----> Installing bundler 2.3.25
remote: -----> Removing BUNDLED WITH version in the Gemfile.lock
remote: -----> Compiling Ruby/Rails
remote: -----> Using Ruby version: ruby-3.2.4
remote: -----> Installing dependencies using bundler 2.5.6
remote:        Running: BUNDLE_WITHOUT='development:test' BUNDLE_PATH=vendor/bundle BUNDLE_BIN=vendor/bundle/bin BUNDLE_DEPLOYMENT=1 bundle install -j4
        ...
remote: -----> Detecting rake tasks
remote: -----> Preparing app for Rails asset pipeline
remote:        Running: rake assets:precompile
        ...
remote:        Asset precompilation completed (1.93s)
remote:        Cleaning assets
remote:        Running: rake assets:clean
remote: -----> Detecting rails configuration
remote:
remote:
remote: -----> Discovering process types
remote:        Procfile declares types     -> web
remote:        Default types for buildpack -> console, rake
remote:
remote: -----> Compressing...
remote:        Done: 82.1M
remote: -----> Launching...
remote:        Released v6
remote:        https://polar-inlet-4930.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/polar-inlet-4930.git
 * [new branch]      main -> main

アプリケーションがデプロイされました。

ログに示されている URL でアプリにアクセスします。 次のショートカットを使って、Web サイトを簡単に開くこともできます。

$ heroku open

​ログを表示する

Heroku では、すべてのアプリと Heroku のコンポーネントの出力ストリームから集約した時系列イベントのストリームとして、ログが扱われます。Heroku は、すべてのイベントに単一のストリームを提供します。

実行中のアプリに関する情報を表示するには、ログコマンド​の 1 つである、heroku logs --tail​ を使います。

$ heroku logs --tail
2023-03-01T20:35:41.251666+00:00 heroku[web.1]: Starting process with command `bundle exec puma -C config/puma.rb`
2023-03-01T20:35:42.338830+00:00 app[web.1]: [2] Puma starting in cluster mode...
2023-03-01T20:35:42.338853+00:00 app[web.1]: [2] * Puma version: 6.4.2 (ruby 3.2.4-p170) ("The Eagle of Durango")
2023-03-01T20:35:42.338854+00:00 app[web.1]: [2] *  Min threads: 5
2023-03-01T20:35:42.338877+00:00 app[web.1]: [2] *  Max threads: 5
2023-03-01T20:35:42.338888+00:00 app[web.1]: [2] *  Environment: production
2023-03-01T20:35:42.338908+00:00 app[web.1]: [2] *   Master PID: 2
2023-03-01T20:35:42.338925+00:00 app[web.1]: [2] *      Workers: 2
2023-03-01T20:35:42.338951+00:00 app[web.1]: [2] *     Restarts: (✔) hot (✖) phased
2023-03-01T20:35:42.338968+00:00 app[web.1]: [2] * Preloading application
2023-03-01T20:35:45.603105+00:00 app[web.1]: [2] * Listening on http://0.0.0.0:41385
2023-03-01T20:35:45.603195+00:00 app[web.1]: [2] Use Ctrl-C to stop
2023-03-01T20:35:45.610050+00:00 app[web.1]: [2] - Worker 0 (PID: 6) booted in 0.0s, phase: 0
2023-03-01T20:35:45.610915+00:00 app[web.1]: [2] - Worker 1 (PID: 9) booted in 0.0s, phase: 0
2023-03-01T20:35:45.758375+00:00 heroku[web.1]: State changed from starting to up

さらに他の生成されたログメッセージを表示するには、まずブラウザでアプリケーションにアクセスします。

ログのストリーム出力を停止するには、Control+C​ を押します。

​アプリをスケールする

サンプルアプリをデプロイすると、1 つの Web dyno​ で自動的に実行されます。 dyno とは、Procfile​ で指定されているコマンドを実行する軽量のコンテナのようなものです。

実行されている dyno の数を確認するには、ps​ コマンドを使います。

$ heroku ps
=== web (Eco): `bundle exec puma -C config/puma.rb`
web.1: up 2023/03/01 11:28:21 (~ 4m ago)

Heroku でアプリケーションをスケールするとは、実行中の dyno の数を変更することを意味します。 Web dyno の数を 0 にスケールしてみます。

$ heroku ps:scale web=0

ブラウザで更新ボタンを押して再度アプリにアクセスするか、heroku open​ コマンドを使って Web タブで開きます。 リクエストに応答できる Web dyno がないので、エラーメッセージが表示されます。

もう一度スケールしてみましょう。

$ heroku ps:scale web=1

Eco​ にサブスクライブしている場合、アプリではデフォルトで Eco dyno が使用されます。それ以外の場合は、デフォルトで Basic dyno が使用されます。Eco dyno プランは、アカウントのすべての Eco dyno 間で共有され、多数の小さなアプリを Heroku にデプロイする場合にお勧めします。Eco dyno は 30 分間トラフィックを何も受信しないとスリープします。 このスリープ動作により、スリープ解除した最初のリクエストで数秒の遅延が発生します。Eco dyno は、月ごとに割り当てられるアカウント別の Eco dyno 時間​を消費します。割り当て時間が残っている限り、アプリは稼働し続けます。

dyno がスリープしないようにするには、「dyno タイプ​」の記事で紹介されている Basic 以上の dyno タイプにアップグレードします。少なくとも Standard dyno にアップグレードすることで、プロセスタイプあたり複数の dyno にスケールアップできます。

​アプリの依存関係を宣言する

Heroku では、アプリのルートディレクトリに Gemfile​ ファイルがあると、そのアプリを Ruby アプリと認識します。

デプロイしたデモ用アプリには、事前に次のような Gemfile​ が用意されています。

source 'https://rubygems.org'
ruby '>= 3.1', '< 3.4'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 7.0.4.2'
# Use postgresql as the database for Active Record
gem 'pg', '~> 1.3.5'
# Use SCSS for stylesheets
gem 'sass-rails'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier'
...

Gemfile​ ファイルは、アプリケーションと一緒にインストールする依存関係を指定します。このファイルでは、Heroku でアプリケーションを実行するときに使用される Ruby のバージョンも決定します。

アプリをデプロイすると、Heroku がこのファイルを読み出し、bundle install​ コマンドを使って適切なバージョンの Ruby と依存関係をインストールします。

アプリをローカルで実行するには、依存関係もローカルでインストールする必要があります。この Gemfile 依存関係 pg​ は、Postgres をローカルでインストール​している場合にのみ解決されます。 先に進む前に Postgres をインストールします。

コマンド which psql​ で、コマンドラインに何らかの値が返された場合は、Postgres がローカルでインストールされています。

$ which psql
/usr/local/bin/psql

ローカルディレクトリで bundle install​ を実行して依存関係をインストールし、アプリをローカルで実行できるようにシステムを準備します。

$ bundle install
Using rake 13.0.6
Using concurrent-ruby 1.2.2
Using i18n 1.12.0
....
Using turbolinks 5.2.1
Using uglifier 4.2.0
Your bundle is complete!

依存関係がインストールされたら、アプリをローカルで実行できます。

​アプリをローカルで実行する

お使いの開発環境でアプリをローカル実行するには、若干の作業が必要です。

サンプルアプリはデータベースを使用するので、rake​ タスクを使って適切なデータベースとテーブルをローカルで作成する必要があります。

$ bundle exec rake db:create db:migrate
== 20140707111715 CreateWidgets: migrating ====================================
-- create_table(:widgets)
   -> 0.0076s
== 20140707111715 CreateWidgets: migrated (0.0077s) ===========================

heroku local​ コマンドを使ってアプリケーションをローカルで起動します。このコマンドは、Heroku CLI の一部です。

$ heroku local web --port=5001
[OKAY] Loaded ENV .env File as KEY=VALUE Format
2:48:23 PM web.1 |  [69541] Puma starting in cluster mode...
2:48:23 PM web.1 |  [69541] * Puma version: 6.4.2 (ruby 3.2.4-p170) ("The Eagle of Durango")
2:48:23 PM web.1 |  [69541] *  Min threads: 5
2:48:23 PM web.1 |  [69541] *  Max threads: 5
2:48:23 PM web.1 |  [69541] *  Environment: development
2:48:23 PM web.1 |  [69541] *   Master PID: 69541
2:48:23 PM web.1 |  [69541] *      Workers: 2
2:48:23 PM web.1 |  [69541] *     Restarts: (✔) hot (✖) phased
2:48:23 PM web.1 |  [69541] * Preloading application
2:48:24 PM web.1 |  [69541] * Listening on http://0.0.0.0:5001
2:48:24 PM web.1 |  [69541] Use Ctrl-C to stop
2:48:24 PM web.1 |  [69541] - Worker 0 (PID: 69543) booted in 0.19s, phase: 0
2:48:24 PM web.1 |  [69541] - Worker 1 (PID: 69545) booted in 0.19s, phase: 0

Heroku と同じように、heroku local​ は Procfile​ を使用して実行するコマンドを認識します。

アプリケーションがローカルで実行していることを確認するには、Web ブラウザで「http://localhost:5001」を開きます。

アプリのローカル実行を停止するには、CLI で Control + C​ を押して終了します。

​ローカルの変更をプッシュする

このステップでは、アプリケーションへのローカルでの変更を Heroku に反映させます。

Gemfile​ を編集して、cowsay​ gem の依存関係を追加します。

source 'https://rubygems.org'
ruby '>= 3.1', '< 3.4'

gem "cowsay"

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 7.0.4.2'
...

この gem を使用するように app/views/welcome/index.erb​ を変更します。ファイルの最初の数行を次のように変更します。

<pre><%= Cowsay.say("Hello", "tux") %></pre>
...

ローカルでテストします。

$ bundle install
$ heroku local --port=5001

「http://localhost:5001​」でアプリケーションにアクセスすると、変更が機能すると、ASCII アートが表示されます。

次は、このローカルの変更を Heroku にデプロイします。

Heroku へのデプロイは、ほとんどの場合、このパターンで行います。 まず、変更したファイルをローカルの Git リポジトリに追加します。

$ git add .

次に、変更内容をリポジトリにコミットします。

$ git commit -m "Added cowsay gem"

次に、以前と同じようにデプロイします。

$ git push heroku main

最後に、すべて正常に動作しているかどうかを確認します。

$ heroku open

​ログ記録アドオンをプロビジョニングする

データベース以外に、アドオンはアプリケーションに多くの追加のサービスを提供します。このステップでは、アプリのログを保存する無料のアドオンをプロビジョニングします。

Heroku では、デフォルトで 1500 行のアプリケーションログが記録されますが、完全なログストリームはサービスとして提供されています。複数のアドオンプロバイダーが、ログの永続化、検索、メールや SMS 通知などの機能を提供するログサービスを用意しています。

このステップでは、このようなログ関連アドオンの 1 つである、Papertrail​ をプロビジョニングします。

Papertrail ログ記録アドオンをプロビジョニングします。

$ heroku addons:create papertrail
Adding papertrail on polar-inlet-4930... done, v11 (free)
Welcome to Papertrail. Questions and ideas are welcome (support@papertrailapp.com).  Happy logging!
Use `heroku addons:docs papertrail` to view documentation.

アドオンがデプロイされ、アプリケーション用に設定されました。 アプリのアドオンは、次のコマンドで一覧表示できます。

$ heroku addons

このアドオンが動作していることを確認するため、アプリケーションの Heroku URL に数回アクセスします。アクセスするたびにログメッセージが生成され、Papertrail のアドオンに送られます。 Papertrail のコンソールにアクセスし、ログメッセージを確認します。

$ heroku addons:open papertrail

ブラウザで Papertrail の Web コンソールが開き、最新のログイベントが表示されます。このインターフェースでは、検索したり通知を設定したりできます。

コンソールのスクリーンショット

​コンソールを起動する

One-off dyno​ で、heroku run​ コマンドを使ってコマンド (通常はアプリの一部を構成するスクリプトやアプリケーション) を実行できます。アプリの環境で試行するためにローカルターミナルにアタッチされた REPL プロセスを起動することもできます。

$ heroku run rails console
Running rails console on ⬢ polar-inlet-4930... up, run.1360 (Eco)
Loading production environment (Rails 7.0.4.2)
irb(main):001:0>

Error connecting to process​ というエラーが表示された場合は、ファイアウォールを設定します​。

コンソールが起動すると、アプリ全体が読み込まれます。たとえば、puts Cowsay.say("hi", "Cow")​ と入力すると「hi」という吹き出しの付いた動物が表示されます。コンソールを終了するには、exit​ と入力します。

irb(main):001:0> puts Cowsay.say("hi", "tux")
 ____
| hi |
 ----
   \
    \
        .--.
       |o_o |
       |:_/ |
      //   \ \
     (|     | )
    /'\_   _/`\
    \___)=(___/
=> nil
irb(main):002:0> exit

別の例を試してみましょう。別の One-off dyno を作成し、bash​ コマンドを実行して、その dyno でシェルを開きます。シェルが開いたら、そこでコマンドを実行できます。それぞれの dyno には専用の一時的ファイル領域があり、アプリとその依存関係が入力されています。コマンドが完了したら (このケースでは bash​)、dyno が終了します。:

$ heroku run bash
Running bash on ⬢ polar-inlet-4930... up, run.6847 (Eco)
~ $ ls
app  app.json  bin  config  config.ru  db  Gemfile  Gemfile.lock  lib  log  package.json  Procfile  public  Rakefile  README.md  test  tmp  vendor
~ $ exit
exit

必ず exit​ と入力してシェルを閉じ、dyno を終了してください。

​環境設定を定義する

Heroku では、暗号鍵や外部リソースのアドレスなどのデータを環境設定​に保存して、設定を外部に置くことができます。

環境設定は、ランタイムに環境変数としてアプリケーションに提供されます。 例として、app/views/welcome/index.erb​ を編集し、環境変数 TIMES​ の値に応じてあるアクションを繰り返し実行するメソッドを追加します。 ファイルの最初の数行を次のように変更します。

<% for i in 0..(ENV['TIMES'] ? ENV['TIMES'].to_i : 2) do %>
  <p>Hello World #<%= i %>!</p>
<% end %>

heroku local​ は、ローカルディレクトリにある .env​ ファイルの内容に応じて、環境を自動的に設定します。 サンプルプロジェクトのトップレベルディレクトリにはすでに .env​ ファイルがあり、以下の行が含まれています。

TIMES=10

heroku local --port=5001​ でアプリを実行すると、「Hello World」というテキストが 10 回表示されます。

Heroku で環境設定を設定するには、次のコマンドを実行します。

$ heroku config:set TIMES=10

heroku config​ を使用して、アプリの環境設定を表示します。

$ heroku config
== polar-inlet-4930 Config Vars
PAPERTRAIL_API_TOKEN: erdKhPeeeehIcdfY7ne
TIMES: 10
...

このアクションの変更を確認するには、変更したアプリケーションを Heroku にデプロイします。

​データベースを使う

アプリの環境設定を一覧表示すると、アプリがデータベースに接続するときに使用する URL (DATABASE_URL​) が表示されます。

$ heroku config
=== polar-inlet-4930 Config Vars
DATABASE_URL:                postgres://xx:yyy@host:5432/d8slm9t7b5mjnd
HEROKU_POSTGRESQL_BROWN_URL: postgres://xx:yyy@host:5432/d8slm9t7b5mjnd
...

Heroku には、さらに詳細を表示する pg​ コマンドもあります。

$ heroku pg
=== DATABASE_URL
Plan:                  Essential 0
Status:                Available
Connections:           0/20
PG Version:            15.5
Created:               2024-05-01 13:22 UTC
Data Size:             7.61 MB / 1 GB (0.74%) (In compliance)
Tables:                3
Fork/Follow:           Unsupported
Rollback:              Unsupported
Continuous Protection: Off
Add-on:                postgresql-elliptical-30581

この情報は、essential-0​ データベースが Postgres v15.5 を実行しており、3 つのテーブルがあることを示しています。

デプロイしたサンプルアプリにはデータベース機能が備わっています。それには、アプリの「/widgets」ページで使用されるウィジェットのコントローラーとデータベースモデルがあります。アプリの URL に「/widgets」を追加して、このページにアクセスできます。

その URL にアクセスすると、エラーページが表示されます。heroku logs​を使用するか、または Papertrail でエラーメッセージを確認すると、次のようになっています。

2014-07-08T14:52:37.884178+00:00 app[web.1]: Started GET "/widgets" for 94.174.204.242 at 2014-07-08 14:52:37 +0000
2014-07-08T14:52:38.162312+00:00 heroku[router]: at=info method=GET path="/widgets" host=fox828228.herokuapp.com request_id=3755bb46-4de2-4434-a13a-26ec73e53694 fwd="94.174.204.242" dyno=web.1 connect=0 service=294 status=500 bytes=955
2014-07-08T14:52:38.078295+00:00 app[web.1]: Processing by WidgetsController#index as HTML
....
2014-07-08T14:52:38.146062+00:00 app[web.1]: PG::UndefinedTable: ERROR:  relation "widgets" does not exist

このエラーは、データベースへの接続は成功したものの、widgets​ テーブルが見つからなかったことがわかります。 rake db:migrate​を実行して、そのエラーを解決できます。 Heroku でこのコマンドを実行するには、次のように One-off dynoで実行します。

$ heroku run rake db:migrate
Running `rake db:migrate` attached to terminal... up, run.3559
Migrating to CreateWidgets (20140707111715)
== 20140707111715 CreateWidgets: migrating ====================================
-- create_table(:widgets)
   -> 0.0244s
== 20140707111715 CreateWidgets: migrated (0.0247s) ===========================

ここで、アプリの /widgets​ ページにもう一度アクセスすると、ウィジェットのレコードを一覧表示して、作成できます。

Postgres がローカルでインストールされている場合、データベースと直接対話することもできます。たとえば、次のように psql​ を使ってデータベースに接続し、クエリを実行できます。

$ heroku pg:psql
d8slm9t7b5mjnd=> select * from widgets;
 id |   name    | description  | stock |         created_at         |         updated_at
----+-----------+--------------+-------+----------------------------+----------------------------
  1 | My Widget | It's amazing |   100 | 2023-03-01 21:04:39.029311 | 2023-03-01 21:04:39.029311
(1 row)

詳細は、「Heroku PostgreSQL​」を参照してください。

​次のステップ

ここまで、アプリのデプロイ、アプリの設定変更、ログの表示、スケール、アドオンのアタッチを行う方法を説明しました。

次にお勧めするリソースを紹介します。

  • 「Heroku の仕組み​」では、アプリケーションの作成、設定、デプロイ、および実行時に必要な技術的な概念の概要を紹介しています。
  • Ruby アプリケーションの開発とデプロイの詳細については、Ruby サポートカテゴリ​を参照してください。
  • 「Heroku スターターガイド (Rails 7.x)​」では、Rails アプリのデプロイについて詳しく説明しています。

コストを抑制するために、チュートリアルを完了したらすぐにサンプルアプリを削除​し、データベースも削除​してください。

アプリとアドオンを削除する

アカウントからアプリとデータベースを削除します。使用したリソースに対してのみ課金されます。

この操作により、アドオンとデータベースに保存されたすべてのデータが削除されます。

$ heroku addons:destroy heroku-postgresql
 ▸    WARNING: Destructive Action
 ▸    This command will affect the app polar-inlet-4930
 ▸    To proceed, type polar-inlet-4930 or re-run this command with
 ▸    --confirm polar-inlet-4930

>

この操作により、アプリケーションが完全に削除されます。

$ heroku apps:destroy
 ▸    WARNING: This will delete ⬢ polar-inlet-4930 including all add-ons.
 ▸    To proceed, type polar-inlet-4930 or re-run this command with
 ▸    --confirm polar-inlet-4930

>

以下のコマンドによって、アドオンとアプリが消去されたことを確認できます。

$ heroku addons --all
$ heroku apps --all

これで、​アプリをデプロイする​準備ができました。または Rails アプリのデプロイについて詳しく知るには、「Heroku スターターガイド (Rails 7.x)​」を参照してください。

関連カテゴリー

  • Ruby

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure
  • .NET

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing
  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Github
  • LinkedIn
  • © 2025 Salesforce, Inc. All rights reserved. Various trademarks held by their respective owners. Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States
  • heroku.com
  • Legal
  • Terms of Service
  • Privacy Information
  • Responsible Disclosure
  • Trust
  • Contact
  • Cookie Preferences
  • Your Privacy Choices