0

これらはrubocopまたはci経由で何らかの形で防ぐことができますか?rails:悪い/矛盾しているデータベースの移行を防ぐ

私たちは、最初は私たちのmasterブランチには、いくつかの移行を持っていた:

# migration 1 
create_table :some_table do |t| 
    t.string :some_col 
end 

# migration 2 
def change 
    rename_column :some_table, :some_col, :some_other_col 
end 

我々はまた、some_tableの列を直接改名された独立した/古い枝だったしかし:

create_table :some_table do |t| 
    t.string :some_col 
end 

合併しましたin/passed ci &は何の問題もなく生産されましたが、数週間後に新しいテスト環境にデプロイされるとNo such column: some_tableというエラーが発生したときに捕まってしまいました。

答えて

1

からの引用:この正確な問題を説明しrake db:schema:load vs rake db:migrate

既存のアプリに新しい移行を追加している、あなたは熊手db:migrateを実行する を必要としていますが、特に既存のアプリケーション (に参加するとき古いアプリケーション)、またはアプリケーション データベースを削除し、再度作成する必要がある場合は、常にスキーマを読み込むためにrake db:schema:loadを実行する必要があります。

新鮮なインスタンスをスピンアップするときは、いつものように最初のデータベースをdb:schema:loadでロードしてください。

+0

ああ、ありがとう! は、マージの前にキャッチされる可能性があるかどうかを知ることに興味があります(移行が最新の古い環境での問題を防ぐため) – L457