运行是否安全
Klass.reset_column_information
Klass.connection.schema_cache.clear!
在rails应用程序运行时正在生产中?
我希望实现零停机部署,并在后台迁移完成运行后启动功能。后台迁移正在创建新表,以便快速完成。
从我在短期研究中收集到的内容。如果我的Rails应用服务器重新启动并且尚未创建表,Klass
(当然继承自ActiveRecord::Base
)将在启动Rails的急切加载过程中缓存表尚未存在的事实应用程序在生产中。
只要当我的部分代码使用与Klass
相关的功能时,该表不存在,我想检查是否存在名为Klass.table_name
的表,并尝试重新加载其架构。在一段时间(分钟),表将由后台迁移创建,最后一次重新加载模式,我可能正在使用我的新功能。
我不担心性能影响,因为此功能不经常使用,并且很可能在迁移完成之前甚至不会触发一次。
TLDR:
那将是程序。
我知道我可以把它分成两个部署。在旧代码运行时在后台添加新表,然后部署需要这些表的功能。但我想知道我是否可以通过一次部署获得可行的解决方案。我想避免为新功能进行两次部署,只是为了实现零停机时间。
答案 0 :(得分:0)
您应该查看Capistrano
,它会提供您正在寻找的所有功能。
这是项目:
https://github.com/capistrano/capistrano
这是一个很好的教程(需要专业会员资格):