每当发生一些主要的rails版本碰撞时,有时真的很难升级现有的rails应用程序(4.x,5.x等),因为有很多宝石可能依赖于旧版本的rails(ActiveRecord,ActionController,ActiveModel,等等。)。而那些依赖宝石有时需要花费太多时间进行升级(要么不维护,要么不活跃,要么不具备核心维护团队,即使是接受Pull请求)。人们周围的解决方案是什么?
人们建议的一个工作流程是分叉所有依赖的宝石,然后改变你喜欢的任何东西,并不断更新它们各自的主/主分支。我很想听听人们在他们的工作流程中遵循的内容。
我认为你应该删除/替换在主要Rails更新后不久可用的兼容版本的宝石。
在Rails 5发布之前差不多6个月就可以使用测试版的Rails 5。如果gem在该时间内没有更新,它可能不会在以后更新,或者它也会减慢对其他所有Rails更新的影响。
遇到这种情况时,我会看到几个选项:
随着您添加到堆栈中的每个gem,您的应用程序都会产生成本和风险。观看宝石的成本,它是如何变化的,是否有安全修复?以及宝石将在某个时候被抛弃的风险。
当你遇到这样的情况时,你可以预先做一些事情来减轻痛苦: