- 公開日:2015年5月11日
- 最終更新日:2015年5月17日
技術的負債の返却は計画的に(by ◯コム)。
以前に、railsを4.1.2から4.2.1にバージョンアップしたので、今回はrubyのバージョンをruby 2.1.2 からruby 2.2.2にupdateします。
以下、忘備録です。
環境
- rails4.2.1
- vagrant(centos6.5)
- chef11.18.0.rc.1
vagrantを立ちあげて、rubyの現在のバージョンを確認する
vagrant up vagrant ssh ruby -v ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
chefのrolesで設定しているjsonファイルを更新する
Before
// something... "rbenv": { "rubies": "2.1.2" "global" : "2.1.2", "gems" : { "2.1.2" : [ { "name" : "bundler" } ] } }, // something...
After
// something... "ruby_build": { "upgrade": "sync" }, "rbenv": { "rubies": "2.2.2", "global" : "2.2.2", "gems" : { "2.2.2" : [ { "name" : "bundler" } ] } }, // something...
変更のポイントは以下の箇所になります。
"ruby_build": { "upgrade": "sync" },
上記の設定は、chef-ruby_buildを利用している場合、既にruby-buildがインストールされていると更新がかからないようになっているので、 ruby_buildのattributeにupgradeを設定しています。上記以外に、"upgrade": trueでも動作するみたいです。
chefを実行
cd {chefのフォルダ} knife solo cook 192.XXX.33.XXX
結果
ruby -v ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]
無事に変更されています。bundleのgemも変更されているのでbundle installを実行する必要があります。
bundle install --path /tmp
vagratでbundle installをするときは、ホストとsyncしていないフォルダを指定します。syncしているフォルダを選択すると、bundle execが途中で止まってしまいます(もしくは激重)。
デグレのチェックのためにテストコードを実行
cd {プロジェクトフォルダ} bundle exec rspec spec
みんな大好きrspec。上記の処理を実行してエラーが発生しなければ問題ありません。
開発環境でdeploy
まずは念のために開発環境をdeployしてみましょう。deployツールにはcapistrano(3.2.1)を使用します。
最初に、rubyのバージョンを2.1.2に設定していたdeploy.rbとCapfileを2.2.2に変更します。
deploy.rbを修正
set :rbenv_type, :system # :system or :user set :rbenv_ruby, '2.2.2'
Capfileを修正
require 'capistrano/rbenv' set :rbenv_ruby, '2.2.2'
deploy実行
上記のファイルを変更したら、deployを実行します。
bundle exec cap development deploy
bundle installされるので時間がかかりますが、うまく動きます。
本番環境では「chefを実行」からの手順を開発環境と同じように実施すればOKです。
以上
0 件のコメント:
コメントを投稿