Slide 1

Slide 1 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. Ruby&Railsアップデート の戦い 2019.03.07 オタクが最新技術を追うライトニングトークイベント 株式会社虎の穴 開発室 JUNE-JUNE

Slide 2

Slide 2 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. 今回話すこと 1. 自己紹介 2. はじめに 3. バージョンの変遷 4. なぜやるのか 5. やったこと紹介とポイント 6. バージョンアップやってみて 2

Slide 3

Slide 3 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. 自己紹介 名:JUNE-JUNE ‣ 現在:N代目ファンティアマン ‣ 前職:スマフォアプリサーバーサイドエンジニア    +プロジェクトリーダーみたいなことやってた オタク ‣ えろげ:ランス大好き ‣ アニメ:毎週10本程度 ‣ ブーム:某喪女漫画 3

Slide 4

Slide 4 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. はじめに 4

Slide 5

Slide 5 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. 業務のとあるプロジェクト Ruby 2.3.0 Rails 5.0.0 5

Slide 6

Slide 6 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. 古いのでそろそろ バージョンアップ したいですね 6

Slide 7

Slide 7 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. バージョンの変更 7

Slide 8

Slide 8 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. バージョンの変遷 Ruby 2.3.0 → 2.5.3 Rails 5.0.0 → 5.2.1 付随する形で..... activemodel 5.0.0 → 5.2.2 aws-sdk 2.3 → 3.0.1 redis 3.3.0 → 4.1.0 他にも盛りだくさん! 8

Slide 9

Slide 9 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. なぜやるのか 9

Slide 10

Slide 10 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. なぜやるのか ・使えるGem(ライブラリ)を増やすため ・プロジェクト全体を把握できるから ・Railsの知識がかなり身に付くから ・なんとなくやりたかった 10

Slide 11

Slide 11 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. やったこと紹介 と ポイント解説 11

Slide 12

Slide 12 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. 設定ファイル変更 12

Slide 13

Slide 13 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. 設定ファイル変更 13 ①「app:update」コマンドを実行 ②既存の変更を保持するようにマージする

Slide 14

Slide 14 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. 設定ファイル変更 14 ・主にconfig/* のファイル群 ・過去のGit編集履歴を見て、なぜ過去の人たちが  「設定ファイルに変更を加えたか」を理解する

Slide 15

Slide 15 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. テーブルIDがBIGINTデフォルトになる 15

Slide 16

Slide 16 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. テーブルIDがBIGINTデフォルトになる 16 ・5.1リリースノート「9 Active Record」参照 ・マイグレーションでのテーブル生成時にて、  idが「bigint」で生成される ①方法1:「id: :integer」のオプション指定 ②方法2:「外部参照カラム」を「bigint」型にする ③方法3:schema.rbを再生成する

Slide 17

Slide 17 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. テーブルIDがBIGINTデフォルトになる 17 ③方法3:schema.rbを再生成する →テストコードを含めて対応する場合はこの方法がベター →再生成すると、  新しいバージョンに最適化されたschema.rbになる (テーブルごとにid: :integerのオプションが  自動で追加されている)

Slide 18

Slide 18 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. alias_method_chainは使えない 18

Slide 19

Slide 19 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. alias_method_chainは使えない 19 ・メソッドの上書きをする手段 ・5.0から非推奨。5.0リリースノート「10.2 非推奨」参照 ・非推奨だが依存ライブラリなどの影響か、  サーバ起動時に動作しなくなっている

Slide 20

Slide 20 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. 20 ※ActiveRecordをutf8mb4で動かすためのよくあるソース

Slide 21

Slide 21 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. 外部依存のデフォルト設定が変わった 21

Slide 22

Slide 22 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. 外部依存のデフォルト設定が変わった 22 ・5.2リリースノート「8 Active Record 8.3 主な変更点」参照 ・belongs_to+foreign_keyの設定をしており、  外部キーのnilを許可する場合で発生 ・オプションの付与が必須となる belongs_to :user, class_name: 'User', foreign_key: :user_id belongs_to :user, class_name: User, foreign_key: :user_id, optional: true

Slide 23

Slide 23 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. enumの変数でjoinが ActiveRecordのメソッドと重複しているからNGとなる件 23

Slide 24

Slide 24 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. enumの変数でjoinが ActiveRecordのメソッドと重複しているからNGとなる件 24 ・かなりレアケースな事例 ・5.2リリースノート「8 Active Record 8.3 主な変更点」参照  『Relationのインスタンスメソッドと衝突するスコープ定義を許さないようになった。 』

Slide 25

Slide 25 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. 25 $ bin/rails c                    >User.join SELECT `users`.* FROM `users` FROM `users`.`status` = 0 enumの変数でjoinが ActiveRecordのメソッドと重複しているからNGとなる件

Slide 26

Slide 26 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. 26 $ bin/rails c                    >User.join SELECT `users`.* FROM `users` FROM `users`.`status` = 0 アップデート後、このjoinが重複する enumの変数でjoinが ActiveRecordのメソッドと重複しているからNGとなる件

Slide 27

Slide 27 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. 27 ・enumの変数名を変えるしかない ・極力、よくある名前を変数につけないようにした方がいい enumの変数でjoinが ActiveRecordのメソッドと重複しているからNGとなる件

Slide 28

Slide 28 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. Redisの設定方法が変わります 28

Slide 29

Slide 29 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. Redisの設定方法が変わります 29 ・リリースノート「2.6 ActiveSupport::Cache::RedisCacheStore」参照 ・Railsが5.2より公式でキャッシュ機構をサポート ・公式サポートのRedis設定方法じゃないと動かなくなった

Slide 30

Slide 30 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. 30

Slide 31

Slide 31 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. 31

Slide 32

Slide 32 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. rails-footnotesが動かない\(^o^)/ 32

Slide 33

Slide 33 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. rails-footnotesとは 33 ・開発デバッグのライブラリ ・上記のようなフッターが設定した各画面に追加される ・実行されているSQLや処理時間を見ることができる rails-footnotesが動かない\(^o^)/

Slide 34

Slide 34 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. rails-footnotesが動かない\(^o^)/ 34 ・サーバー起動すると上記のエラーがでた 「instance_writter」でプロジェクト内を検索しても出てこない  ↓ 「Gem」で取り込んでいる何かが原因と推測  ↓  1つ1つのGemを取り外し、エラーが出なくなるまで検証 `mattr_accessor` : unknown keyword: instance_writter (AngumentError)

Slide 35

Slide 35 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. 35 weblioの検索結果より rails-footnotesが動かない\(^o^)/

Slide 36

Slide 36 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. 36 ・変数名のタイポミス修正を放置しており、Rails5.2からは動作しない  ※Issueでも突っ込まれてる  ※利用者からpullリクエストが出されているが、リリースされていない https://github.com/josevalim/rails-footnotes/issues/153 rails-footnotesが動かない\(^o^)/

Slide 37

Slide 37 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. 37 ・「Latest commit 0ca9f4c on 21 Jul 2016」で  3年もバージョンアップをしていない ・保守されていないGemなので、コメントアウト rails-footnotesが動かない\(^o^)/

Slide 38

Slide 38 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. テストコード 38

Slide 39

Slide 39 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. テストコード 39 ・Railsアップデートにおいては必須 ・500あるテストコード結果のうち、300件が失敗 ・不足している処理部分のテストを追加実装する

Slide 40

Slide 40 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. バージョンアップ作業やってみて 40

Slide 41

Slide 41 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. バージョンアップ作業やってみて 41 ・Railsの勉強になる ・日本語の参考サイトが存在しないこと多々あり ・古すぎるGemを切り捨てる勇気も必要 ・プロジェクト初期の成り立ちが紐解けてくる ・テストコードの必要性が身に沁みる

Slide 42

Slide 42 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. しかし・・・ バージョンアップ作業、まだまだあります 42

Slide 43

Slide 43 text

虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Copyright © 2019 Toranoana Inc. All Rights Reserved. 続きは(そのうち)同人誌2.0にて! 43