它是安全的運行在Rails生產應用程序中清除列緩存安全嗎?
Klass.reset_column_information
Klass.connection.schema_cache.clear!
生產,而Rails應用程序運行?
我想做零停機時間部署,並且在後臺遷移完成運行後開始工作。後臺遷移正在創建新表,因此它們將很快完成。
從我在短期研究中收集的內容。如果我的Rails應用程序服務器重新啓動並且表尚未創建,Klass
(當然繼承自ActiveRecord::Base
)會在生產中引導Rails應用程序時的預先加載過程期間緩存表尚未存在的事實。
只要當使用與Klass
功能我的代碼部分被擊中我想檢查是否存在名爲Klass.table_name
表的存在,並嘗試重新加載其架構中的表不存在。在一段時間內(分鐘),表格將通過後臺遷移創建,最後一次重新加載模式,我可以使用我的新功能。
我不擔心性能影響,因爲此功能不常使用,並且在遷移完成運行之前很可能不會觸發一次。
TLDR:
- 部署Rails應用程序
- 重啓Web服務器
- 開始運行的後臺遷移
- 功能無活性
- 結束正在運行的後臺遷移
- 功能活躍
這將是程序。
我知道我可以將它分成兩個部署。在舊代碼運行時在後臺添加新表,然後執行需要這些表的功能部署。但是我想知道我是否可以通過一次部署就能獲得一個工作解我想避免爲部署零宕機時間而對兩項新功能進行部署。
否則當你已經掛起的遷移是相當棘手的零時間部署。 – bronislav