👋
Railsのダウングレードの方法(技術選定でも役に立つようにする)
なぜダウングレードするのか
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.rb
のconfig.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
資料
ChatGPT
Discussion