2016年12月27日火曜日

【Ruby2.4.0 & Rails5.0.1】 rails5.0.1で稼働中のWEBアプリをruby2.3.0からruby2.4.0にアップグレードする その1 chef-client Local modeでruby2.4.0をinstallする

記事概要

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移行用の機能ブランチを作成します。

terminal

cd {project_folder}
git branch feature-ruby2.4.0

checkoutでブランチを切り替えます。

terminal

git checkout feature-rails5.0.1

準備完了です。

chefでruby2.4.0をinstall

まず現在のrubyのversionを確認します。

terminal

ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]

rbenvでinstall可能なrubyを確認します。

terminal

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ファイルを確認します

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を実行します。

terminal

// root化
su -

cd {chef-repo_base}

chef-client -z -j 192.168.33.10.json

実行完了後、rbenvでinstall可能なrubyを確認します。

terminal

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ファイルを変更します

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で実行します。

terminal

// root化
su -

cd {chef-repo_base}

chef-client -z -j 192.168.33.10.json

実行完了後に確認します。

terminal

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の変更の説明をします。

以上です。

PICK UP オススメ書籍

運営サイト(railsで作成しています)


関連記事

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...