Techioz Blog

Ruby on Rails アプリのアップグレードまたは書き換え (Rails 5.0 から 7.1)

概要

Ruby on Rails アプリのアップグレードまたは書き換え (Rails 5.0 から 7.1)

こんにちは。大規模な Web アプリ (ユーザー管理、注文などを備えたショップ、および API コントローラーを介して ROR アプリと通信する ThreeJS アプリ) を入手しました。バージョンはRails 5.0.0.2beta2です。 Ruby 2.3.1p112 および postgress 10.19。これを運用環境で使用しており、freebsd 13 を備えた新しいサーバーに移行する必要があるため、最新バージョンにアップグレードしたいと考えています。また、OpenSSL のバージョンが低すぎるため、古い Ruby のインストールはサポートされていません。メジャー バージョンが複数遅れています。 最善のアプローチは何ですか?次のように段階的に更新します。

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

それともアプリケーションを完全に書き直す方が賢明でしょうか? そこで、ROR アプリを作成して以下を統合します。 -> モデル -> DB 移行 -> 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 で VM を起動し、必要に応じて構成してみました。 PostgreSQL V11 を使用している場合、PostgressDB の新しい FreeBSD バージョンへのバックアップとインポートは機能します。

解決策

十分なテストが行われていない場合、Ruby on Rails アプリケーションを更新するのは難しい場合があります。

まず、バージョンの更新を開始する前に、アプリケーションでいくつかの単体テストを実行することをお勧めします。

さらに、バージョンごとに何が変更されるか、コード内で何を更新する必要があるかを理解するための公式ガイドもあります。

shopify bootboot gem を使用できます。その目的は、各 gemfile で指定されたバージョンを使用してアプリケーションを 2 回ビルドすることです (これにより、アプリケーションを実行し、2 回目のビルドで更新することができます)。

最後に、Gem の互換性を制御する RailsBump を使用することをお勧めします。