#はじめに
アプリ作成に必要なのがデータベース-テーブルです。
これの作成や編集には色々な手間がかかりますが、
チーム開発では恐ろしいエラーが出てくることがあります。
今回はその解決方法を一つ提示したいと思います。
#状況
4人チーム開発を行っている。
使っているテーブルはusers
とproducts
。
ある時、それまでできていたブランチを全てmergeし、チーム全員にpullしました。
その後rails s
でエラーが出ました。
「migrationしなさい」といったエラーです。
そこで、ターミナル上でrake db:migrate
をすると、already exists 'products'
という様なエラーが出て、rake db:migrate
ができません。
#原因
人によってマイグレーションファイルの作り方が異なる=テーブルが違うので、全てをマージしたマイグレーションファイル群をまとめてmigrationすると、色々問題が起きるようになるようにしました。(同じマイグレーションファイルが二つあるなど)
#対策
まずは作業用のbranchを作成します。
細かい修正を行うと再びエラーが出ると思い、一度全てのテーブルを削除しました。同時に、チーム全員で協力して不必要なマイグレーションファイルを削除していきます。
その後migrationを行います。
#実行
この作業は一人パソコン上で行っています。各々が勝手に作業するのではなくて、一人が作業しているところを画面を見ながらところどころコメントすることにより間違いが少なくなるからです。
マイグレーションファイルがうまく整備できたのなら、次のコマンドをターミナルで入力してください。
rake db:reset:migrate
上手くいかなかったら、次の順でコマンドを実行してください。
rails db:environment:set
rake db:reset
rake db:migrate
これにより、テーブルの中身は消えていますが、
全員が共通のテーブルを持っていることになります。
#終わりに
チーム内の打ち合わせが足りていないとこのような事態を引き起こしますが、
反対に全員で調べたことを持ち寄り、話し合いながら一つの手順にまとめ、詳しい人にチェックしてもらい、やってみた結果をフィードバックしていけば成長に繋がっていくと思うので、ピンチはむしろチャンスととらえるぐらいな感じで楽しんでもらえたらなと思います。