You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby on Rails应用升级还是重构?(Rails 5.0至7.1)

Rails多版本升级方案咨询及实践反馈

问题背景

我有一个大型Web应用(包含用户管理、订单系统的电商平台,以及通过API控制器与ROR应用通信的ThreeJS应用),当前版本为Rails 5.0.0.beta2、Ruby 2.3.1p112和PostgreSQL 10.19。因应用处于生产环境,需迁移至FreeBSD 13服务器,但该服务器因OpenSSL版本过低不支持旧版Ruby,故必须将应用升级至最新版本。目前落后多个主版本,纠结两种方案:

  • 按5.0→5.2→6.0→6.1→7.0→7.0.2的方式增量升级
  • 彻底重构应用(创建新ROR应用,依次集成模型、数据库迁移、Gem、配置、视图与控制器、资源)

额外挑战是当前应用无测试用例,希望得到高效低风险的方案建议,也欢迎有类似经验的人士分享见解。

当前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'

前期准备工作

  • 已清理不必要的Gem
  • 搭建了FreeBSD 13虚拟机用于测试配置
  • 将PostgreSQL数据库备份导入新版本时,使用PostgreSQL 11可正常工作

升级进展更新(09.24)

遵循建议执行bundle install和bundle update后,逐步升级应用变得相当顺利。但最初运行bundle update时因Gem及依赖过时遇阻,关键解决办法是先安装最新版本的Bundler。之后移除了所有不再使用的Gem和库,仅用三天就完成了Ruby和Rails的当前版本升级。

升级后的真正挑战是集成Turbo、JSBundling等现代工具,使应用符合当前标准。


内容的提问来源于stack exchange,提问作者Christian Bischoff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 15:26:28