はじめに
筆者の環境は以下のとおりです。(テンプレート)
・VSCodeを使用(CLIでWindows Terminalを利用する場合があります)
・Windows10にてWSL2でUbuntu20.04LTSを使用
・Bash、Git、asdfを使用
Rails6.0系からRails6.1系にマイグレーションする際、職場の先輩から教わった
Ruby(+bundler再インストール)及びNode.js(+yarn再インストール)のアップデート
+Railsマイグレーションの流れをメモ書きします。
あくまで メモ書き なので過度な期待はしないでください。
■バージョンの呼称方法例
・〇〇(ツール名) XX(メジャー).XX(マイナー).XX(パッチ)
■バージョン読み方参考サイト
共通する注意点
・「環境の変更」というリスクが高い作業を行うため、gitで管理している場合に
main(master)ブランチやdevelopブランチではなく
feature-refacter-yyyymmddなどの一時ブランチを作成し作業すること
・上記ブランチをpush時にpull-requestを作成すること
・一気に実行せず各アップデート単位で実施しgit add
及びgit commit
すること
・アップデートしたらbin/rails s
でRailsサーバを起動し、
ローカル動作確認すること(小規模な場合)
※他のあらゆるバージョンアップでも同じ方法での実施を心がけること
Rails及び各種パッケージのアップデート方法
■バージョンアップの手法(例としてnode.js)
メモ
・Node.jsは偶数番号がLTSに相当する
・パッチバージョン含め最新にする
例:RailsでのNode.jsが14.17.0だった場合
(1)現環境と同じメジャーバージョン内での最新マイナーバージョンを入れる。
※モノによっては相性などもあるかもしれないので、
不安な方は各種documentationを読んでください。
参考:教わった時点の現バージョン14.21.1
(2)動作確認が取れたらメジャーバージョンを上げる。
参考:教わった時点の安定バージョン:16.18.1
※この時点で18.XX.XX~が存在したが影響範囲が分からない(検証時間が無い)為、
今回は既に職場で適用実績がある上記バージョンを採用。
■各種パッケージの更新コマンド
アドバイスメモ
・複数回体験することによって実行するコマンドの順番を習熟できる
・手動ではなく、コマンドに対応して特定の処理を自動実行する設定をできるが
定期的にやらないと忘却する可能性があるため手動にしたほうが良い箇所もある
- Node.jsのバージョンを上げる(asdf利用)
=> asdf install nodejs xx.xx.xx
=> asdf local nodejs xx.xx.xx
=> npm install -g yarn(Node.jsのパッケージマネージャであるyarnのバージョンを上げる)
- rubyのバージョンを上げる(asdf利用)
=> asdf install ruby xx.xx.xx
=> asdf local ruby xx.xx.xx(※ここでバージョンが変わらない方はググってください)
=> gem install bundler(Node.jsの流れと同じRuby版)
=> gem install solargraph(仮にsolargraphを利用している場合)
◇solargraph参考1(導入方法)
◇solargraph参考2(gemのdoc)
■Railsのバージョンをマイグレーションする
railsの6.0系の最新パッチバージョンに上げる
=> そこからrails6.1に上げる(メジャーバージョンを上げる)
(1)Rails6.1の新規アプリケーションを作成する(rails new sample_appなど)
=> wslの場合windowsのローカル環境に落とす
(2)マイグレーション前Railsアプリ(6.0最新パッチバージョン)をローカルに落とす
(3)上記(1)と(2)のソースをWinMergeなどのツールで比較し、
自分が実装したModelなどの差分は勿論、手動で書き換えた
configの設定以外の差分を目視で確認しながら修正する。
※上記の方法はあくまで差分が少ない
(利用しているgemが10個以内など)場合に利用するべきであり
差分が多くなった場合には下記Rails標準のマイグレーション手順を検討すべし。
(4)6.0のソースの方に6.1の方の差分を被せていく(新しい方から旧にコピペなどで移行していく)
=> 完了後、GemfileのRailsバージョンを上げる
=> 手動でやらなくてもマイグレーションしてくれる標準機能がRailsには存在するようだが
~.yml等、上記機能を利用した際にコンバート用に
自動作成される設定ファイル(手動では生成されない無駄なファイル)が存在するらしい。
(詳しくは要調査)
さいごに
・最初にも記述しましたがあくまでメモです
・読み辛い箇所が多々あるかもしれませんが、ここまで読んでいただければ幸いです
・今後、読み直して修正する場合があります