本番環境でテーブルがないと怒られた

Railsには、テスト用・開発用・本番用の3つ環境が用意されています。
詳しくはレシピ177に載っています。

Railsレシピブック 183の技

Railsレシピブック 183の技

各環境の切り替え

実行モード 説明
RAILS_ENV=production 本番用
RAILS_ENV=development 開発用
RAILS_ENV=test テスト用

各環境を呼び出すには、表のようなオプションを付けることでできます。
例えば、本番環境でサーバを動かすには

env RAILS_ENV="production" mongrel_rails start

のようにします。

テーブルがないエラー

上のように本番環境で起動させて、アプリを見たところ
以下のようなエラーが表示されました。

We're sorry, but something went wrong.
We've been notified about this issue and we'll take a look at it shortly.

エラーの通り"/log/production.log"を見てみると、以下のような内容が

ActiveRecord::StatementInvalid (Could not find table 'tablenames'):
...
...

どうもtablenamesテーブルが見つからないとのこと。
本番用にもマイグレーションする必要があるようです。
そこで以下のようにオプションを付けて実行。

rake RAILS_ENV=production db:migrate

無事表示されるようになりました。
この方法が正しいのかわかりませんが。


イマイチ開発から本番へのやり方が理解できていない。