1年ぐらい切れていたマネーフォワードの金融機関連携を設定したら貯金がめちゃ減っていて驚いた@mikedaです。 ガチャ怖い。あと引っ越しかな。
1ヶ月ほど前に、JOBLISTで使っているrubyのバージョンを2.4.1から2.5.1に変更しました。
ruby 2.5の新機能などについては他にいっぱい情報があるので、今回は手順のメモだけ残しておきます。
やったこと
コードの変更
変更点はこのくらいです。
- .ruby-versionの更新
- 動かなくなったgemのアップデート(bundle update haml pry-doc)
- 一部のコードがSyntaxErrorになったので修正
- CI用のDockerイメージの更新
- サーバー切り替え(必須じゃないですが今回は各種パッケージのバージョンアップをかねて)
細かく書くのが面倒なのでPRのdiffをそのまま貼ってみます。
diff --git a/.ruby-version b/.ruby-version index 005119baaa..73462a5a13 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.4.1 +2.5.1 diff --git a/Gemfile.lock b/Gemfile.lock index 89d9bd3195..a59043b593 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -135,7 +135,7 @@ GEM cliver (0.3.2) code_analyzer (0.4.8) sexp_processor - coderay (1.1.1) + coderay (1.1.2) coercible (1.0.0) descendants_tracker (~> 0.0.1) concurrent-ruby (1.0.5) @@ -362,7 +362,7 @@ GEM signet (~> 0.7) gretel (3.0.9) rails (>= 3.1.0) - haml (5.0.1) + haml (5.0.4) temple (>= 0.8.0) tilt haml-rails (1.0.0) @@ -438,7 +438,7 @@ GEM memoist (0.16.0) meta-tags (2.4.1) actionpack (>= 3.2.0, < 5.2) - method_source (0.8.2) + method_source (0.9.0) mime-types (3.1) mime-types-data (~> 3.2015) mime-types-data (3.2016.0521) @@ -466,16 +466,15 @@ GEM polyamorous (1.3.1) activerecord (>= 3.0) powerpack (0.1.1) - pry (0.10.4) + pry (0.11.3) coderay (~> 1.1.0) - method_source (~> 0.8.1) - slop (~> 3.4) + method_source (~> 0.9.0) pry-byebug (3.4.2) byebug (~> 9.0) pry (~> 0.10) - pry-doc (0.10.0) - pry (~> 0.9) - yard (~> 0.9) + pry-doc (0.13.4) + pry (~> 0.11) + yard (~> 0.9.11) pry-rails (0.3.6) pry (>= 0.10.4) public_suffix (3.0.2) @@ -590,7 +589,7 @@ GEM rspec-mocks (3.6.0) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.6.0) - rspec-rails (3.6.0) + rspec-rails (3.6.1) actionpack (>= 3.0) activesupport (>= 3.0) railties (>= 3.0) @@ -607,8 +606,8 @@ GEM unicode-display_width (~> 1.0, >= 1.0.1) ruby-progressbar (1.8.1) ruby_dep (1.5.0) - ruby_parser (3.9.0) - sexp_processor (~> 4.1) + ruby_parser (3.11.0) + sexp_processor (~> 4.9) sass (3.4.24) sass-rails (5.0.6) railties (>= 4.0.0, < 6) @@ -619,7 +618,7 @@ GEM scss_lint (0.53.0) rake (>= 0.9, < 13) sass (~> 3.4.20) - sexp_processor (4.9.0) + sexp_processor (4.11.0) shoulda-matchers (3.1.1) activesupport (>= 4.0.0) sidekiq (5.0.0) @@ -642,7 +641,6 @@ GEM slack-notifier (2.1.0) slackistrano (3.1.1) capistrano (>= 3.5.0) - slop (3.6.0) spring (2.0.1) activesupport (>= 4.2) sprockets (3.7.1) @@ -663,7 +661,7 @@ GEM ref thor (0.19.4) thread_safe (0.3.6) - tilt (2.0.7) + tilt (2.0.8) trollop (2.1.2) tzinfo (1.2.5) thread_safe (~> 0.1) @@ -697,7 +695,7 @@ GEM xpath (2.1.0) nokogiri (~> 1.3) yajl-ruby (1.3.1) - yard (0.9.9) + yard (0.9.12) PLATFORMS ruby diff --git a/config/deploy.rb b/config/deploy.rb index 323ef67127..283e5fcff0 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -9,7 +9,7 @@ set :keep_releases, 5 set :rbenv_type, :user -set :rbenv_ruby, '2.4.1' +set :rbenv_ruby, '2.5.1' set :rbenv_prefix, "RBENV_ROOT=#{fetch(:rbenv_path)} RBENV_VERSION=#{fetch(:rbenv_ruby)} #{fetch(:rbenv_path)}/bin/rbenv exec" set :rbenv_map_bins, %w[rake gem bundle ruby rails sidekiq sidekiqctl] set :rbenv_roles, :app diff --git a/config/deploy/production.rb b/config/deploy/production.rb index 5952264f48..caa395422b 100644 --- a/config/deploy/production.rb +++ b/config/deploy/production.rb @@ -6,7 +6,7 @@ set :whenever_environment, :production set :branch, 'master' -server 'joblist-app-005.rista.lan', user: 'rista', roles: %w[app web db] -server 'joblist-app-006.rista.lan', user: 'rista', roles: %w[app web] -server 'joblist-admin-005.rista.lan', user: 'rista', roles: %w[app web batch_main] -server 'joblist-admin-006.rista.lan', user: 'rista', roles: %w[app web batch_sub] +server 'joblist-app-007.rista.lan', user: 'rista', roles: %w[app web db] +server 'joblist-app-008.rista.lan', user: 'rista', roles: %w[app web] +server 'joblist-admin-007.rista.lan', user: 'rista', roles: %w[app web batch_main] +server 'joblist-admin-008.rista.lan', user: 'rista', roles: %w[app web batch_sub] diff --git a/config/deploy/staging.rb b/config/deploy/staging.rb index 50e0ae1222..90663374df 100644 --- a/config/deploy/staging.rb +++ b/config/deploy/staging.rb @@ -2,4 +2,4 @@ set :unicorn_config_path, shared_path.join('unicorn.rb') set :branch, ENV['BRANCH'] || 'master' -server 'joblist-stg-003.rista.lan', user: 'rista', roles: %w[app db web] +server 'joblist-stg-004.rista.lan', user: 'rista', roles: %w[app db web] diff --git a/spec/models/shop_spec.rb b/spec/models/shop_spec.rb index a22037a6b..1b46e33e1 100644 --- a/spec/models/shop_spec.rb +++ b/spec/models/shop_spec.rb @@ -1,7 +1,7 @@ require 'rails_helper' RSpec.describe Shop, type: :model do - let(:shop) { create(:shop) } + let :shop { create(:shop) } subject { shop } it { should respond_to(:company) } diff --git a/wercker.yml b/wercker.yml index d4dfc09c29..0c0a1f74f8 100644 --- a/wercker.yml +++ b/wercker.yml @@ -1,4 +1,4 @@ -box: mikeda/rails-test-with-elasticsearch +box: mikeda/rails-test-with-elasticsearch:2.5 services: - redis build:
手元の作業
いつものやつです。
brew upgrade ruby-build rbenv install 2.5.1 ruby -v # 2.5.1になっているのを確認 gem install bundler bundle
CI環境の調整
CIにはwerckerを使っています。 wercker.ymlのdiffに出ているように、CI用のDockerイメージは既存のテストに影響を与えないように一時的に2.5用のタグをつけてDockerHubに登録しました。
DockerHubのレポジトリはGitHubレポジトリと連携するように設定しています。
今回やったことはDockerHub上でGitHubのブランチとDockerタグの連携設定をして、
GitHubにDockerfileの変更をpushしただけです。
update 2.5 by mikeda · Pull Request #7 · mikeda/rails-test-with-elasticsearch · GitHub
最終的に全ての作業・動作確認が完了後、このタグは削除されました。
本番デプロイ
ステージング環境で動作確認後、本番環境にデプロイしました。
今回は全アプリケーションサーバをサーバごと切り替えました。本番サーバのrubyのrbenv管理されてるので必須じゃないですが各種パッケージのバージョンアップをかねて。
まとめ
特に大きなトラブルもなくサクッとバージョンアップできました。
begin無しのrescueや標準ライブラリの細かい調整がうれしいです。