Production modeで動作するためのmigrate
rake db:migrate RAILS_ENV=production
とすることで、Production環境にmigrateを適応することが出来る。
(Heroku上で動作させるときはheroku run rake db:migra...としましょう)
実行時にずっと出ていたエラーは
$ rails s -e production
ActiveRecord::StatementInvalid (PG::Error: ERROR: relation "posts" does not exist
LINE 4: WHERE a.attrelid = '"posts"'::regclass
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"newsposts"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
):
app/controllers/posts_controller.rb:5:in `index'# postgresql上
ERROR: relation "posts" does not exist at character 245
STATEMENT: SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"posts"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
リレーションがありません!なんで…?と謎だったのだけど、rake db:migrateだけではProduction用のDB作ってくれないんですねー。なんでだろ。そこまでやってくれれば良いように思うのだけど、まぁ本番環境に適応させる時には気をつけるようにしよう。
ここ数日はこれを放置してローカルで動作する事のみを考えて勉強してたのだけど、これでちゃんと公開できる場所で勉強進めることができそうです。