前提
本記事は、Qiitaに投稿したものを微修正したものです。
はじめに
アプリ作成に必要なのがデータベース-テーブルです。
これの作成や編集には色々な手間がかかりますが、
チーム開発では恐ろしいエラーが出てくることがあります。
今回はその解決方法を一つ提示したいと思います
状況
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
これにより、テーブルの中身は消えていますが、
全員が共通のテーブルを持っていることになります。
終わりに
チーム内の打ち合わせが足りていないとこのような事態を引き起こしますが、
反対に全員で調べたことを持ち寄り、話し合いながら一つの手順にまとめ、詳しい人にチェックしてもらい、やってみた結果をフィードバックしていけば成長に繋がっていくと思うので、ピンチはむしろチャンスととらえるぐらいな感じで楽しんでもらえたらなと思います。
ちなみに、今回の出来事はTECH::CAMPの最終課題中に発生しました。
こんなトラブルを体験できるのは、プログラムスクール多しといえども、TECH::CAMPぐらいだろうと思います。
コメント