Skip Navigation
Show nav
Heroku Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
  • ドキュメント
  • 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

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

​はじめに

このチュートリアルでは、ローカルの Microsoft Windows 開発環境で Ruby アプリを開発し、それを Heroku にデプロイする方法を示します。 JRuby を使用します。これは若干 Windows に操作性が近い環境を提供します。

Windows ではない場合、従来の『Heroku スターターガイド (Ruby)​』ガイドをお勧めします。

最初のステップとして、無料の ​Heroku アカウント​でサインアップします。

次に前提条件をインストールします。

  1. ​JDK 8​ をダウンロードしてインストールし、Java 仮想マシン (JVM) を取得します。

  2. ​JRuby 9.1.17.0​ をダウンロードしてインストールします。ご使用の Windows バージョンに応じた JRuby .exe​ インストーラーを選択します。インストール後、PATH が変更されるので、新しいコマンドプロンプトを開始します。

  3. Bundler をインストールします。これには、コマンドプロンプトを開いて jruby -S gem install bundler​ と入力します。

'jruby' is not recognized as an internal or external command, operable program or batch file.​ のようなエラーが表示されたら、ターミナルセッションを閉じ、新しいターミナルを開いて %PATH%​ 環境変数が正しく設定されていること確認します。

​設定する

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

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

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

windows ロゴ​Windows

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

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

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

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

​Windows では、コマンドプロンプト (cmd.exe) または Powershell を起動して、コマンドシェルを開きます。

heroku login​ コマンドを使って Heroku CLI にログインします。

$ 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​ コマンドが正常に動作するために必要な操作です。

​アプリを準備する

このステップでは、デプロイできるシンプルなアプリケーションを準備します。

サンプルアプリケーションをクローンして、Heroku にデプロイするコードのローカルバージョンを作成するには、ローカルのコマンドシェルまたはターミナルで次のコマンドを実行します。

> git clone https://github.com/heroku/jruby-getting-started.git
> cd jruby-getting-started

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

​アプリをデプロイする

このステップでは、アプリを Heroku にデプロイします。

Heroku でアプリを作成すると、Heroku でソースコードを受け取ることができるよう準備できます。

> heroku create
Creating polar-inlet-4930... done, stack is heroku-20
http://polar-inlet-4930.herokuapp.com/ | https://git.heroku.com/polar-inlet-4930.git
Git remote heroku added

アプリを作成すると、heroku という名前の Git リモートリポジトリも作成され、ローカルの Git リポジトリと関連付けられます。

Heroku によってランダムなアプリ名 (この場合は polar-inlet-4930) が生成されます。

次にコードをデプロイします。

> git push heroku master
Counting objects: 176, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (113/113), done.
Writing objects: 100% (176/176), 31.81 KiB | 0 bytes/s, done.
Total 176 (delta 51), reused 170 (delta 48)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Ruby app detected
remote: -----> Compiling Ruby/Rails
remote: -----> Using Ruby version: ruby-2.3.1-jruby-9.1.17.0
remote: -----> Installing JVM: openjdk1.8-latest
remote: Picked up JAVA_TOOL_OPTIONS: -Xmx768m -Djava.rmi.server.useCodebaseOnly=true
remote: -----> Installing dependencies using 1.7.12
remote:        Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
remote:        Picked up JAVA_TOOL_OPTIONS: -Xmx768m -Djava.rmi.server.useCodebaseOnly=true
remote:        Fetching gem metadata from https://rubygems.org/...........
remote:        Installing json 1.8.1
...
remote:        Installing sass-rails 4.0.5
remote:        Your bundle is complete!
remote:        Gems in the groups development and test were not installed.
remote:        It was installed into ./vendor/bundle
remote:        Bundle completed (162.29s)
remote:        Cleaning up the bundler cache.
remote: -----> Preparing app for Rails asset pipeline
remote:        Running: rake assets:precompile
...
remote:        Asset precompilation completed (107.72s)
remote:        Cleaning assets
remote:        Running: rake assets:clean
remote:        Picked up JAVA_TOOL_OPTIONS: -Xmx768m -Djava.rmi.server.useCodebaseOnly=true
remote:
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote:        Default types for Ruby  -> console, rake, worker
remote:
remote: -----> Compressing... done, 97.9MB
remote: -----> Launching... done, 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]      master -> master

アプリケーションがデプロイされました。アプリのインスタンスが 1 つ以上実行されていることを確認します。

> heroku ps:scale web=1

アプリ名で生成された URL にあるアプリを開きます。次のショートカットを使うと、簡単に Web サイトを開くことができます。

> heroku open

​ログを表示する

Heroku では、すべてのアプリと Heroku コンポーネントの出力ストリームを、時系列のイベントストリームに集約してログを作成するため、1 か所ですべてのイベントを確認できます。

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

> heroku logs --tail
2014-07-07T11:42:26.829065+00:00 heroku[web.1]: Starting process with command `bundle exec puma -t 5:5 -p ${PORT:-3000} -e ${RACK_ENV:-development}
2014-07-07T11:42:35.334415+00:00 app[web.1]: I, [2014-07-07T11:42:35.334301 #2]  INFO -- : listening on addr=0.0.0.0:19146 fd=9
2014-07-07T11:42:35.707657+00:00 app[web.1]: I, [2014-07-07T11:42:35.707293 #5]  INFO -- : worker=0 ready
2014-07-07T11:42:35.772074+00:00 app[web.1]: I, [2014-07-07T11:42:35.771727 #11]  INFO -- : worker=2 ready
2014-07-07T11:42:35.767750+00:00 app[web.1]: I, [2014-07-07T11:42:35.764688 #2]  INFO -- : master process ready
2014-07-07T11:42:35.777268+00:00 app[web.1]: I, [2014-07-07T11:42:35.777006 #8]  INFO -- : worker=1 ready
2014-07-07T11:42:35.618291+00:00 heroku[web.1]: State changed from starting to up

ブラウザで再びアプリケーションを表示すると、別のログメッセージが生成されます。

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

​Procfile を定義する

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

デプロイしたアプリ例で Procfile を表示するには、type Procfile​ と入力します。web: puma -t 5:5 -p ${PORT:-3000} -e ${RACK_ENV:-development}​ のように表示されます。

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

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

​アプリをスケールする

現在、アプリは単一の Web dyno で実行されています。dyno とは、Procfile で指定されているコマンドを実行する軽量のコンテナのようなものです。

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

> heroku ps
=== web (Free): `web: puma -t 5:5 -p ${PORT:-3000} -e ${RACK_ENV:-development}`
web.1: up 2014/07/07 12:42:34 (~ 23m ago)

デフォルトでは、アプリは Free dyno でデプロイされます。Free dyno は、アイドル状態 (トラフィックを何も受信しない状態) が 30 分続くとスリープします。​ スリープすると、スリープ解除するときの最初のリクエスト時に数秒の遅延が発生します。その後のリクエストは正常に処理されます。 Free dyno は、月ごとに割り当てられるアカウント別の Free dyno 時間​を消費します。割り当て時間が残っている限り、無料のアプリはすべて稼働し続けます。

dyno がスリープしないようにするには、「dyno タイプ​」の記事で紹介されている Hobby または Professional の dyno タイプにアップグレードできます。たとえば、アプリを Professional dyno に移行すると、Heroku に特定の数の dyno の実行を指示するコマンドを実行し、各 dyno で Web プロセスタイプを実行させて、アプリを簡単にスケールすることができます。

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

$ heroku ps:scale web=0

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

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

$ heroku ps:scale web=1

不正操作を防止するため、有料のアプリケーションを 2 つ以上の dyno にスケールするには、アカウントの確認が必要です。

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

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

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

source 'https://rubygems.org'

ruby '2.3.1', :engine => 'jruby', :engine_version => '9.1.17.0'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.4'
# Use postgresql as the database for Active Record
gem 'activerecord-jdbcpostgresql-adapter'
gem 'rails_12factor', group: :production
gem 'puma'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.3'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
...

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

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

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

> jruby -S bundle install --binstubs
Using rake 10.3.2
Using i18n 0.6.9
Using json 1.8.1
Using minitest 5.3.5
....
Using puma 2.11.0
Your bundle is complete!

No such file or directory -- bundle (LoadError)​ というエラーが表示された場合は、「はじめに​」に記述されているように、jruby -S gem install bundler​ を実行していることを確認してください。

依存関係がインストールされたら、アプリをローカルで実行する準備は完了です。

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

ご使用の開発環境でアプリをローカル実行するには、若干の作業が必要です。Rails は通常、データベースを必要とします。このサンプルアプリケーションでは Postgres を使用します。ローカルで Postgres をインストール​するための Dev Center での指示に従う必要があります。Postgres をインストールする場合、デフォルトユーザーに対して設定したパスワードを書き留めてください。

config\database.yml​ ファイルを開き、ローカル (開発) データベースのユーザー名とパスワードを設定します。次の行を探します。

development:
  <<: *default
  database: ruby-getting-started_development

  # The specified database role being used to connect to postgres.
  # To create additional roles in postgres see `$ createuser --help`.
  # When left blank, postgres will use the default role. This is
  # the same name as the operating system user that initialized the database.
  #username: ruby-getting-started

  # The password associated with the postgres role (username).
  #password:

このようにユーザー名とパスワードを変更します (ただし、パスワードは Postgres のインストール時に使用したものに置き換えます)。

  username: postgres

  # The password associated with the postgres role (username).
  password: postgres

ruby-getting-started_test​ データベースについてもこれを繰り返します。これは、開発データベースエントリの下の test:​ セクションにあります。

これで、rake タスクを使用して、このアプリの適切なデータベースおよびテーブルを作成できます。

> jruby -S bin\rake db:create db:migrate
== 20140707111715 CreateWidgets: migrating ====================================
-- create_table(:widgets)
   -> 0.0076s
== 20140707111715 CreateWidgets: migrated (0.0077s) ===========================

プロジェクト例には Procfile.windows​ も含まれ、ここには web: jruby -S bin\puma -t 5:5 -p %PORT% -e development​ の行が含まれます。

このファイルは、Windows でのアプリケーションの実行に使用されるコマンドが、Linux ベースである Heroku でのアプリケーションの実行に使用されるコマンドと異なるので必要です。チュートリアルで後からこのファイルを使用します。

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

> heroku local web -f Procfile.windows
13:15:47 web.1  | started with pid 67489
13:15:47 web.1  | I, [2014-07-07T13:15:47.655153 #67489]  INFO -- : Refreshing Gem list
13:15:48 web.1  | I, [2014-07-07T13:15:48.495226 #67489]  INFO -- : listening on addr=0.0.0.0:5000 fd=10
13:15:48 web.1  | I, [2014-07-07T13:15:48.621967 #67489]  INFO -- : master process ready
13:15:48 web.1  | I, [2014-07-07T13:15:48.624523 #67491]  INFO -- : worker=0 ready
13:15:48 web.1  | I, [2014-07-07T13:15:48.626285 #67492]  INFO -- : worker=1 ready
13:15:48 web.1  | I, [2014-07-07T13:15:48.627737 #67493]  INFO -- : worker=2 ready

-f Procfile.windows​ フラグにより、Windows 固有の Procfile が確実に選択されます。Heroku と同じように、heroku local​ もそれを確認して実行する内容を判断します。

Web ブラウザで「http://localhost:5000​」を開きます。ローカルで実行されているアプリが表示されます。

アプリのローカルでの実行を停止するには、ターミナルウィンドウに戻り、Ctrl​ + C​ を押して終了します。

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

このステップでは、アプリケーションへのローカルでの変更を Heroku に反映させる方法を学びます。例として、アプリケーションを変更して依存関係を追加し、それを使用するコードも追加します。

Gemfile​ を編集して、cowsay gem の依存関係を追加します。ファイルは次のようになります。

gem 'cowsay'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.4'
...

この gem を使用するように app/views/welcome/index.erb​ を編集します。最終的に、コードは次のようになります。

<h1>Getting Started with Ruby</h1>

<p>
  Welcome!
</p>

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

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

> jruby -S bundle install
> heroku local web -f Procfile.windows

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

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

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

> git add .

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

> git commit -m "Demo"

前と同じ方法でデプロイします。

> git push heroku master

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

> heroku open

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

アドオンは、アプリケーションですぐに使える追加サービスを提供するサードパーティのクラウドサービスです。永続性、ログ記録、モニタリングなど、さまざまなアドオンがあります。

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

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

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

> heroku addons:create papertrail
Creating papertrail on ⬢ tranquil-tor-77660... free
Welcome to Papertrail. Questions and ideas are welcome (support@papertrailapp.com). Happy logging!
Created papertrail-rugged-93041 as PAPERTRAIL_API_TOKEN
Use heroku addons:docs papertrail to view documentation

不正操作を防止するため、アドオンのプロビジョニングにはアカウントの確認が必要です。アカウントが未確認の場合は、確認用ページに転送されます。

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

> heroku addons

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

> heroku addons:open papertrail

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

​One-off dyno を起動する

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

> heroku run jirb
Running `rails console` attached to terminal... up, run.1594
Loading production environment (Rails 4.2.4)
irb(main):001:0>

“Error connecting to process” (プロセスへの接続エラー) というエラーが表示された場合は、ファイアウォールの設定が必要な可能性があります。

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

irb(main):001:0> require 'cowsay'
require 'cowsay'
=> true
irb(main):002:0> puts Cowsay.say("Hello", "Cow")
 _______
| Hello |
 -------
      \   ^__^
       \  (oo)\_______
          (__)\       )\/\
              ||----w |
              ||     ||
=> nil
irb(main):003:0> exit

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

> heroku run bash
Running `bash` attached to terminal... up, run.1421
~ $ ls
app  config db   Gemfile.lock  log   public    README.rdoc  tmp
bin  config.ru  Gemfile  lib         Procfile  Rakefile  test   vendor
~ $ exit
exit

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

​環境設定を定義する

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

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

<h1>Getting Started with Ruby</h1>

<p>
  Welcome!
</p>

<% 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​ でアプリを実行すると、「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 にデプロイして、動作を確認します。

​データベースを使用する

add-on marketplace には、Redis や MongoDB、Postgres、MySQL など、多数のデータストアが揃っています。このステップでは、無料の Heroku Postgres アドオンについて学びます。このアドオンは、どの Rails アプリをデプロイした場合も、自動的にプロビジョニングされます。

データベースはアドオンなので、CLI で heroku addons​ コマンドを使うと、アプリにプロビジョニングされたデータベースの詳細についてさらに確認できます。

> heroku addons

Add-on                                        Plan       Price  State
────────────────────────────────────────────  ─────────  ─────  ───────
heroku-postgresql (postgresql-concave-37514)  hobby-dev  free   created
 └─ as DATABASE

papertrail (papertrail-rugged-93041)          choklad    free   created
 └─ as PAPERTRAIL

アプリの環境設定を一覧表示すると、アプリがデータベースに接続するときに使用する 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 には、さらに詳細を表示する heroku pg​ コマンドもあります。

> heroku pg
=== HEROKU_POSTGRESQL_BROWN_URL (DATABASE_URL)
Plan:        Hobby-dev
Status:      Available
Connections: 0
PG Version:  9.3.3
Created:     2014-07-07 11:30 UTC
Data Size:   6.6 MB
Tables:      2
Rows:        1/10000 (In compliance)
Fork/Follow: Unsupported
Rollback:    Unsupported

表示内容から、Hobby のデータベース (無料) を使っており、実行している Postgres のバージョンは 9.3.3 で、1 行のデータがあることがわかります。

デプロイしたサンプルアプリにはデータベース機能が備わっています。これにはウィジェット用のコントローラとデータベースモデルがあり、アプリの 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

ここでは、データベースへの接続は成功したものの、必要なテーブルが見つからなかったことがわかります。Rails では、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) ===========================

Web プロセスタイプが dyno で実行されるのと同様に、この rake コマンドも dyno で実行されています。Heroku は新しい dyno を起動し、用意していたアプリを追加して、その環境でコマンドを実行します。その後、dyno は削除されます。

ここで、アプリの /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 | 2014-07-08 15:05:13.330566 | 2014-07-08 15:05:13.330566
(1 row)

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

MongoDB や Redis のアドオン​をインストールするときも、同様のテクニックを利用できます。

次のステップ

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

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

  • 「Heroku の仕組み​」では、アプリケーションの作成、設定、デプロイ、および実行時に必要な技術的な概念の概要を紹介しています。
  • Ruby カテゴリ​では、Ruby アプリケーションの開発とデプロイに関する詳細を確認できます。

Information & Support

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

Language Reference

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

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing

Subscribe to our monthly newsletter

Your email address:

  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Heroku Podcasts
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Facebook
  • Instagram
  • Github
  • LinkedIn
  • YouTube
Heroku is acompany

 © Salesforce.com

  • heroku.com
  • Terms of Service
  • Privacy
  • Cookies
  • Cookie Preferences