LoginSignup
4
0

More than 1 year has passed since last update.

チーム開発でschema.rbを扱うときの注意

Last updated at Posted at 2021-12-11

そもそもschema.rbは自分の環境次第で変わるのでrails  db:migrateした時にpull してきたブランチのschemaがそのまま反映される訳ではない。

Rails db:migrateした時点で元々のschemaとは別のschemaができる。それはいい。

ただ、schema.rb をリモートブランチにpushしてはいけない。何故か?

自分のブランチをpushする時にschemaごとpushしてしまうと本番環境のschemaを変更してしまう。それはダメ。

個人個人のブランチでschemaが変わるように本番環境もまた違うから。

ではどうするか。push する際はschemaはGitの管理下から外すようにする。

やり方としては二つ。

gitignore

にファイルを追加するか、

git update-index --skip-worktree [ファイル名]

で、ファイルをコミット対象から除外する。

ちなみに、上記コマンドで除外したファイルを対象下に再度おきたい場合

git update-index --no-skip-worktree [ファイル名]

コマンドを実行すればもう一度対象下におくことができる。

新しくモデルを作成したり、カラムの追加またはそのどれかを削除する場合はどうするか?

その場合は、新しく作成したmigration ファイルだけをcommit すれば良い。そうすれば本番環境のdb環境(schema)でmigration が実行されそれまでの部分に影響を与えることがない。

そして、その反映を取り込みたい人はそれ(migrationファイル)が追加されたmasterブランチをpullした時に自分のローカル環境でmigration を実行すればまた自分の環境下(schma)でDBの変更が可能になる。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0