它是安全的运行在Rails生产应用程序中清除列缓存安全吗?
Klass.reset_column_information
Klass.connection.schema_cache.clear!
生产,而Rails应用程序运行?
我想做零停机时间部署,并且在后台迁移完成运行后开始工作。后台迁移正在创建新表,因此它们将很快完成。
从我在短期研究中收集的内容。如果我的Rails应用程序服务器重新启动并且表尚未创建,Klass
(当然继承自ActiveRecord::Base
)会在生产中引导Rails应用程序时的预先加载过程期间缓存表尚未存在的事实。
只要当使用与Klass
功能我的代码部分被击中我想检查是否存在名为Klass.table_name
表的存在,并尝试重新加载其架构中的表不存在。在一段时间内(分钟),表格将通过后台迁移创建,最后一次重新加载模式,我可以使用我的新功能。
我不担心性能影响,因为此功能不常使用,并且在迁移完成运行之前很可能不会触发一次。
TLDR:
- 部署Rails应用程序
- 重启Web服务器
- 开始运行的后台迁移
- 功能无活性
- 结束正在运行的后台迁移
- 功能活跃
这将是程序。
我知道我可以将它分成两个部署。在旧代码运行时在后台添加新表,然后执行需要这些表的功能部署。但是我想知道我是否可以通过一次部署就能获得一个工作解我想避免为部署零宕机时间而对两项新功能进行部署。
否则当你已经挂起的迁移是相当棘手的零时间部署。 – bronislav