質問: ### 経緯 Railsの開発でテーブルのスキーマ情報を変更する場合下記の方法があると思います。 1 Migrationの仕組みを使う "rails g migration ~"にてマイグレーションファイルを作成し、"rake db:migrate"で反映する。 (2回目以降カラム追加などをする場合は、コマンドによる生成ではなく、別名でファイルを自作する) 2 既存のMigrationファイルを直接編集する 直接CreateTableしているMigrationに書き加え、"rake db:migrate:reset"で反映する。 今、開発環境で「1」の方法でDBに反映させ、それをHerokuにデプロイしたところ、うまくいきませんでした。schema.rbが更新されていないので、deploy時に変更した点が反映されずにエラーが出ていました。 ### わからないこと productionの運用を考えた上で、開発時点でスキーマ情報の更新を行う場合は、どの方法で行うべきなのでしょうか? また、2の方法では、production環境でもrake db:migrate:resetを行う必要が出てくると思っていて、結果既存のデータも全消去に成ってしまうと思います。仮に回避する方法があれば、ご教授いただきたいです。 実際に運用している方で、どのようにやっているか教えていただけないでしょうか。 よろしくお願いいたします。
回答: `rake db:migrate`は、**環境ごとに**行う必要があります。 Herokuの場合、`heroku run rake db:migrate`のようにHeroku環境内で実行してください。 あと、「すでに行ったマイグレーションを書き換える」のは、(きちんとマイグレーションが運用できている状況であれば)基本的にやるべきではありません。都度マイグレーションファイルを作りましょう。