升级或重写 Ruby on Rails 应用程序(Rails 5.0 至 7.1)

问题描述 投票:0回答:1

升级或重写 Ruby on Rails 应用程序(Rails 5.0 至 7.1)

嗨,我有一个大型 Web 应用程序(一个具有用户管理、订单等功能的商店,以及一个 ThreeJS 应用程序,它通过 api 控制器与 ROR 应用程序进行通信)。版本为Rails 5.0.0.2beta2; ruby 2.3.1p112 和 postgress 10.19。我想升级到最新版本,因为我们在生产中使用它,我们需要迁移到带有 freebsd 13 的新服务器。并且它不支持旧的 Ruby 安装,因为 OpenSSL 版本太低。我落后了多个主要版本。 最好的方法是什么?增量更新如下:

5.0 -> 5.2 -> 6.0 -> 6.1 -> 7.0 -> 7.0.2

或者完全重写应用程序会更谨慎吗? 因此,创建一个 ROR 应用程序并集成: -> 模型 -> 数据库迁移 -> Gems -> 配置 -> 视图和控制器 -> 资产

另一个挑战是该应用程序目前没有笔试 有人对最有效和风险最小的路径有建议吗?那些面临类似挑战的人分享的任何见解或经验将不胜感激。 预先感谢您。

这是我的 Gemfile

source 'https://rubygems.org'
gem 'rails', '5.0.0.beta2'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', github: "rails/coffee-rails"


gem 'jquery-fileupload-rails'
gem 'jquery-ui-rails'

gem 'turbolinks', '~> 5.2.0'
gem 'jbuilder', '~> 2.0'
gem 'puma'

gem 'bcrypt', '~> 3.1.15'

group :development, :test do
  gem 'byebug'
  gem 'factory_girl_rails'
    gem 'capybara'
    gem 'guard-rspec'
    gem 'rspec-rails'
  gem "letter_opener"
end

group :development do
  gem 'web-console', github: 'rails/web-console'
  gem 'spring'
end

gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

gem 'pg'
gem "simple-navigation"
gem 'ancestry'
gem 'multilang-hstore', '~> 1.0.0'

gem 'acts_as_list'
gem 'mini_magick'
gem 'carrierwave'

gem "autoprefixer-rails"
gem 'redis'
gem 'hiredis'
gem 'nokogiri'

gem 'rack-cors'
gem 'amoeba' # for amoeba_dup
gem 'wicked' # Multistep Forms
gem 'premailer-rails'
gem 'paypal-sdk-rest'
gem 'prawn'
gem 'prawn-table'
gem 'barby', '0.6.8'
gem 'responders'
gem 'will_paginate', '~> 3.3'
gem 'coupon_code'
gem 'pg_search'
gem 'dotenv-rails', :require => 'dotenv/rails-now'
gem "recaptcha", require: "recaptcha/rails"
gem "select2-rails"
gem 'logidze'
gem 'woocommerce_api'
gem 'oauth2'
gem 'rest-client'

gem 'paypal-checkout-sdk'
gem 'invisible_captcha'

我已经在删除不必要的宝石了。我使用 FreeBSD 13 启动虚拟机,并尝试根据需要配置它。如果我使用 PostgreSQL V11,则可以将 PostgressDB 备份并导入新的 FreeBSD 版本。

更新09.24

我遵循了@spickermann的建议,在成功运行捆绑安装和捆绑更新后,逐步更新应用程序变得非常简单。然而,让捆绑包更新最初发挥作用是具有挑战性的,因为 gem 和依赖项已经过时了。关键是首先安装最新版本的 Bundler,这有助于解决问题。之后,我删除了所有不再使用的不必要的 gem 和库,只用了三天时间就更新到了 Ruby 和 Rails 的当前版本。

真正的挑战在更新后开始,因为我必须集成 Turbo、JSBundling 和其他现代工具以使应用程序符合当前标准。

ruby-on-rails ruby url-rewriting upgrade major-upgrade
1个回答
0
投票

如果没有足够的测试,更新 Ruby on Rails 应用程序可能会很困难。

我建议,首先,在开始更新版本之前对您的应用程序进行一些单元测试。

然后,有官方指南可以帮助您了解版本之间的变化以及您应该在代码中更新哪些内容。

您可以使用 shopify bootboot gem,其目标是构建应用程序两次,每次使用每个 gemfile 中指定的版本(这允许您在第二次构建时运行和更新应用程序)。

最后,我建议使用 RailsBump,它可以控制 gem 的兼容性。

  1. 启动启动
  2. 轨道碰撞
  3. 升级导轨
© www.soinside.com 2019 - 2024. All rights reserved.