👋

Railsのダウングレードの方法(技術選定でも役に立つようにする)

2024/07/10に公開

なぜダウングレードするのか

Bootstrapを導入する際に、Rails7だと自分以外でも導入するのに苦戦している人がいました
(2024年7月現在)。なので、自分が使いづらいだけでなく、現場でもRails6なら使ったことある人が多い(採用と他のエンジニアのキャッチアップの面)ので、Rails6に変更するという想定で、
ダウングレード作業をすることにしました。

注意(基本現場では、バージョンは変えることはあまりない)

バージョンを変えたことでバグが発生することもあるので、あまり変えることは少ないです。

想定

Railsの7.0.4.3から6.1.7.1にダウングレードします。

Gemfileの更新

Gemfileをダウングレードしたいバージョンに合わせます。ここでは以下のバージョンです。

# Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main"
gem "rails", "~> 6.1.7.1"

上記を追記したら以下のコマンドを実行します。

bundle update rails

config/application.rbを修正

上の実行をしたらconfig/application.rbconfig.load_defaultsを修正します。
修正前は7でしたが、今回は6にするので、6にします。
config.load_defaults 7.0をconfig.load_defaults 6.1に変更しました。

require_relative "boot"

require "rails/all"

# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)

module RailsMediaSharingApp
  class Application < Rails::Application
    # Initialize configuration defaults for originally generated Rails version.
    config.load_defaults 6.1 #修正

    # Configuration for the application, engines, and railties goes here.
    #
    # These settings can be overridden in specific environments using the files
    # in config/environments, which are processed later.
    #
    # config.time_zone = "Central Time (US & Canada)"
    # config.eager_load_paths << Rails.root.join("extras")
  end
end

依存関係を更新し、

bundle install

を実行しました。

動作確認

railsサーバーを起動したら問題なくできました。

% bundle exec rails s
Ignoring nio4r-2.5.9 because its extensions are not built. Try: gem pristine nio4r --version 2.5.9
Ignoring websocket-driver-0.7.6 because its extensions are not built. Try: gem pristine websocket-driver --version 0.7.6
=> Booting Puma
=> Rails 6.1.7.8 application starting in development 
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 5.6.8 (ruby 3.1.3-p185) ("Birdie's Version")
*  Min threads: 5
*  Max threads: 5
*  Environment: development
*          PID: 37189
* Listening on http://127.0.0.1:3000
* Listening on http://[::1]:3000
Use Ctrl-C to stop

警告を解消

バージョンを確認すると以下のような警告が出ました。

% rails -v
Ignoring nio4r-2.5.9 because its extensions are not built. Try: gem pristine nio4r --version 2.5.9
Ignoring websocket-driver-0.7.6 because its extensions are not built. Try: gem pristine websocket-driver --version 0.7.6

これはgemの拡張がビルドされていないという警告みたいです。以下のコマンドを実行しました。

gem pristine nio4r --version 2.5.9
gem pristine websocket-driver --version 0.7.6

実行後問題なくバージョン確認できました。

% rails -v
Rails 6.1.7.8

資料

https://qiita.com/Hassan/items/eef26c870eb26a0c68e0

ChatGPT

Discussion