記事概要
rails5.0.1で稼働中のWEBアプリをruby2.3.0からruby2.4.0にアップグレードした方法をまとめた記事です。
環境
- centos6.5
- rails5.0.1
- ruby2.3.0 → ruby2.4.0
- chef
- rbenv
- unicorn
工数
本番導入までの時間を含めて8hくらいです。
作業内容
ruby2.3.0からruby2.4.0のアップグレードでは、以下の作業を行いました。
- chef-client Local modeでruby2.4.0をinstall
- railsアプリをruby2.4.0に対応させる
- リリース
移行用のbranchの作成
gitでruby2.4.0移行用の機能ブランチを作成します。
cd {project_folder} git branch feature-ruby2.4.0
checkoutでブランチを切り替えます。
git checkout feature-rails5.0.1
準備完了です。
chefでruby2.4.0をinstall
まず現在のrubyのversionを確認します。
ruby -v ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
rbenvでinstall可能なrubyを確認します。
rbenv install -l 2.3.0 2.3.1 2.4.0-dev 2.4.0-preview1
現在の状態ではruby2.4.0のinstallはできないので、ruby-buildを更新します。
chefのroles/web.jsonファイルを確認します
"ruby_build": { "upgrade": "sync" }, "rbenv": { "rubies": ["2.2.2", "2.3.0"], "global" : "2.3.0", "gems" : { "2.2.2" : [ { "name" : "bundler" } ], "2.3.0" : [ { "name" : "bundler" } ] } },
ruby_buildに"upgrade": "sync"が記載されていれば、chef-client Local modeを実行するだけでruby-buildが更新されます。
ruby-buildとrubyのインストールは同時にできないので、まずこの状態でchef-client Local modeを実行します。
// root化 su - cd {chef-repo_base} chef-client -z -j 192.168.33.10.json
実行完了後、rbenvでinstall可能なrubyを確認します。
rbenv install -l 2.3.0 2.3.1 2.3.2 2.3.3 2.4.0-dev 2.4.0-preview1 2.4.0-preview2 2.4.0-preview3 2.4.0-rc1 2.4.0 2.5.0-dev
ruby2.4.0のインストールが可能になりました。
chefのroles/web.jsonファイルを変更します
"ruby_build": { "upgrade": "sync" }, "rbenv": { "rubies": ["2.2.2", "2.3.0", "2.4.0"], "global" : "2.3.0", "gems" : { "2.2.2" : [ { "name" : "bundler" } ], "2.3.0" : [ { "name" : "bundler" } ], "2.4.0" : [ { "name" : "bundler" } ] } },
ruby2.4.0を追記しました。現在動いているアプリに影響がでないように、globalは2.3.0のままにしておきます。再度chef-client Local modeで実行します。
// root化 su - cd {chef-repo_base} chef-client -z -j 192.168.33.10.json
実行完了後に確認します。
rbenv versions 2.2.2 * 2.3.0 (set by /usr/local/rbenv/version) 2.4.0
ruby2.4.0のinstallに成功しました。
まとめ
ruby2.4.0のinstallは、chefを利用していればファイルの追記とコマンドの実行だけで終了します。
次回はrailsの変更の説明をします。
以上です。
0 件のコメント:
コメントを投稿