エンジニアのひよこ_level10

【毎日更新!】新卒2年目エンジニアブログです! プログラムだけじゃなく、マネジメントとかも書いていきたい!

【git】データベースの中身は、gitで管理しないべき【299日目】

良くない例

laravelのスタートページ表示 by klack710 · Pull Request #1 · klack710/study-laravel · GitHub

自作のLaravelの基本の開発環境です。
これの良くないところはどこでしょうか。

mysqlのコンテナの中身全部入ってる

mysql配下の中身、これはmysqlのデータとかが全部入っちゃってます。

これは良くないですね。

え、なぜ悪いか?

重い

gitでプッシュする、プルする時に、ユーザーの入力全部送ったりしてしまいます。

もし、手元で仮の入力とかしたら、それもコミットの中身に入っちゃいますね。

そもそもソースコードの本質ではない

また、このプロジェクト、このコードの本質には、データベースの中身は関係ないはずです。

ユーザーAの会員登録情報が、このプロジェクトの中身の本質か?そんなの関係ないはずです。

でも、新しくテーブル作った時とか、初期データ空っぽ?

開発で、テーブルを新しく作った時とかあると思います。

その時に、初期データどうするか。

これに関しては、何が本質かを見てみましょう。

ユーザーの区分など→マイグレーションファイル

Usersテーブルに、Rolesテーブル。

Usersテーブルは会員情報、Rolesテーブルは、会員における区分を司るとします。
ここに、role_idカラムを追加する。

このRolesテーブルに、adminやclient、userなどの区分を保存する時。
これは変化しない値で、ユーザーの性質を扱うものなので、マイグレーションファイルで初期値として入れればいい。

ユーザーの情報→シード

そもそもユーザー情報がなかったら、
開発するたびに会員登録して、そしてユーザー作って開発するのか。

そうはならないと思います。

そういう時は、データのバックアップをとって、seed値として取っておきましょう。
実際のデータ、あるいは実際に開発できる最低限のデータをseed値として用意して、
開発環境を構築するときに、そのデータでデータベースを作りましょう。

gitで管理するものは、プロジェクトの本質だけを残すべき

ソースコードには、そのプロジェクトにおける本質となるものだけ入れましょう。

エディターによって生成されるファイル、Macだから生成されるファイルとかは、含めないように。
そして、今回のデータベースの情報も、含めないべき情報です。

そういうファイルやフォルダは、 .gitignoreに記述してコミットに含めないように気をつけましょう。