将dry-gems从非常旧的版本升级到更新的版本(为了与ruby 2.7兼容)



我的公司目前正在尝试将我们的porject库更新到ruby 2.7,以准备进一步更新到ruby 3.x。

我们所有的项目目前都在运行ruby 2.5。

它们中的很多都很容易更新,但我必须处理一个非常旧的gem,它是很久以前在内部开发的(并在另一个主要项目中使用(,它在非常过时的版本上运行dry-rb-gems。

我做了一个非常简单的尝试,没有太大的希望,只是升级到最新版本,并试图修复我运行规范时出现的错误,但正如预期的那样,这并不太好,因为最新版本需要的不仅仅是替换几个调用,而是更大的返工。

以下是gemspec和gemfile的外观:

Gemspec

Gem::Specification.new do |s|
#......
s.add_runtime_dependency 'activesupport', '~> 5.2.4'
s.add_dependency 'dry-configurable', '<0.13'
s.add_dependency 'dry-container', '<0.8'
s.add_dependency 'dry-struct', '~> 0.5.0'
s.add_dependency 'dry-types', '~> 0.13.0'
s.add_dependency 'dry-validation', '~> 0.12.0'
s.add_dependency 'geo_coord', '~> 0.1'
s.add_dependency 'i18n', '~> 1.0'
s.add_dependency 'proj4rb', '~> 3.0'
s.add_dependency 'psych', '~> 3.1'
s.add_dependency 'ruby-netcdf', '~> 0.7'
s.add_runtime_dependency 'thor', '~> 1.0', '~> 1.0.1'
end

Gemfile

source 'https://rubygems.org'
gemspec
gem 'dry-validation'
group :development, :test do
gem 'bundler-audit'
gem 'dry-validation-matchers', '~> 1.1.0'
gem 'hashdiff'
gem 'pry', '~> 0.11'
gem 'railties', '> 0', require: false
gem 'rake', '~> 12.3'
gem 'rspec', '~> 3.7'
gem 'rspec-dry-struct', '~> 0.3.0'
gem 'rspec-prof'
gem 'rubocop', '~> 0.62.0'
gem 'simplecov', '~> 0.16'
gem 'yard', '~> 0.9'
end

我对这种事情有点不知所措,真的不知道从哪里开始。如果有人有任何升级干宝石的经验,任何关于这些宝石与ruby 2.7的第一个兼容版本的想法,或者我可以遵循的任何程序,让这个过程不那么痛苦,都将不胜感激!

谢谢!

首先检查您在rubygems文档上的版本要求(如这里的干式配置(。并通过将每一个干宝石一个接一个地制作成小版本来取得进展。

旁注:有一些铁路项目的公司使用的常见铁路升级策略。检查如何使用next_rails gem进行双启动—它可能会帮助您在升级过程中进行升级,此外,一些良好的测试覆盖率和CI/CD设置将在整个升级过程中非常有用。

检查FastRuby页面,然后单击"获取书籍"。这是一本非常有用的铁路升级书。