簡體   English   中英

您如何與開發人員團隊一起管理Ruby on Rails遷移?

[英]How do you manage Ruby on Rails migrations with a team of developers?

我們有一個開發人員團隊,他們每個人都將使用Rails工具為我們的系統開發數據庫遷移。 遷移似乎最初是管理數據庫模式更改的一種很好的方法,但是隨着我們的繼續,以分布式方式管理更改變得更加困難。 如果我們每個人都自己開發遷移,我們如何協調發生的問題呢?

要具體說明問題,請考慮以下方案時間表:

  1. 開發人員A創建一個新的遷移文件,時間戳為上午9:00
  2. 開發人員B創建另一個新的遷移文件,時間戳為上午10:00
  3. 開發人員B檢查日期上午10:00(上午11:00)的遷移
  4. 開發人員A檢查上午9:00(上午11:30)的遷移

這里可能會出現許多問題,特別是如果兩個遷移文件的更改發生沖突,但最基本的問題是有些人在上午9:00遷移時已經運行了上午10:00的遷移。與遷移相關聯的時間戳當然是在創建文件時,而不是在簽入時,這會弄亂Rails遷移器。

這是一個可修復的問題,但解決方案可能有很多不同的選擇。 解決這個問題的最佳方式(或至少是一種好方法)是什么?

這似乎更像是團隊溝通問題,或者是一個簡單的流程問題。 遷移版本從序列號更改為時間戳,以避免開發人員A和B使用相同版本創建遷移的問題。

為了避免遷移沖突:

  • 在創建遷移時始終讓團隊保持循環。 這應該完全避免這個問題。
  • 在檢查代碼更改回主共享倉庫之前,始終從存儲庫中取出並測試遷移(並運行測試套件)。 這是一個應始終遵循的安全網。

現在你的場景看起來像這樣:

  1. 開發人員A創建一個新的遷移文件,時間戳為上午9:00
  2. 開發人員B創建另一個新的遷移文件,時間戳為上午10:00
  3. 開發人員B從存儲庫中提取。 意識到沒有新的變化,在早上10點到凌晨11點進行遷移檢查
  4. 開發人員A從存儲庫中提取,運行遷移和測試套件,解決任何沖突並在上午11:30推送到存儲庫(好的,也許是11:35)。

永遠不要推送到共享倉庫而不確保您的更改不會引入沖突或破壞構建。

我們總是創建一個bootstrap rake任務。 此任務將刪除開發數據庫,​​依次運行所有遷移,然后使用虛假測試數據填充它。

除了要在您的應用中使用大量內容外,您還必須運行所有遷移。 如果在提交內容之前執行此操作,則可以確保所有遷移也適用於其他遷移。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM