rails解説セミナー: railsのアップグレード編

64
Railsアップグレード編 Rails解説セミナー http://railsguides.jp/

Upload: yohei-yasukawa

Post on 15-Apr-2017

727 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Rails解説セミナー: Railsのアップグレード編

Railsアップグレード編

Rails解説セミナー

http://railsguides.jp/

Page 2: Rails解説セミナー: Railsのアップグレード編

セミナーを 始める前に

Page 3: Rails解説セミナー: Railsのアップグレード編

講義中に参照したリンクはコメント欄で (質問もお気軽に)

講師のターミナルは下記 URL から閲覧できます :)

http://screenx.tv/yasulab

Page 4: Rails解説セミナー: Railsのアップグレード編

Slide is in SlideShare!

http://www.slideshare.net/yasulab/presentations

Page 5: Rails解説セミナー: Railsのアップグレード編

質問はいつでもお気軽に! 個別相談は休憩や終了後に :)

Page 6: Rails解説セミナー: Railsのアップグレード編

Sample App で実験 :)

https://github.com/yasslab/sample_apps

Page 7: Rails解説セミナー: Railsのアップグレード編

1. $ git clone \ https://github.com/yasslab/sample_apps.git

2. 対象のディレクトリに移動後: $ git init ; $ bundle exec rake db:migrate $ bundle exec rake db:test:prepare $ bundle exec rake db:populate

3. $ gem install rails --version 4.0.5 4. (Option) $ gem install rails --version 4.1.8 5. (Option) $ gem install rails --version 4.2.3

下準備

Page 8: Rails解説セミナー: Railsのアップグレード編

Ready?

Page 9: Rails解説セミナー: Railsのアップグレード編

解説セミナーを 進めていきましょう!

Page 10: Rails解説セミナー: Railsのアップグレード編

Railsのアップグレード

Rails解説セミナー

http://railsguides.jp/

Page 11: Rails解説セミナー: Railsのアップグレード編

• 中級者~上級者向けの大型リファレンス

• 読み進める順番は特になく、機能毎に解説:

• e.g. Active Record の基礎、バリデーション

• e.g. Action View の概要、フォームヘルパー

• e.g. Action Controller の概要、ルーティング

• 例外: Railsをはじめよう → Rails チュートリアル

• ウェブ版は全編無料! http://railsguides.jp/

Railsガイドとは?

Page 12: Rails解説セミナー: Railsのアップグレード編

今回のテーマ

Page 13: Rails解説セミナー: Railsのアップグレード編

Rails アップグレードガイドhttp://railsguides.jp/upgrading_ruby_on_rails.html

Page 14: Rails解説セミナー: Railsのアップグレード編

メジャーアップグレード を体験してみよう!

今回やること

(そして苦しみを味わう!)

Page 15: Rails解説セミナー: Railsのアップグレード編

Rails 3.2

Rails 4.0

Page 16: Rails解説セミナー: Railsのアップグレード編

マイナーアップグレード も体験してみよう!

時間があれば

(そして苦しみを味わう!)

Page 17: Rails解説セミナー: Railsのアップグレード編

Rails 4.0.5

Rails 4.2.3

Rails 4.1.8

Page 18: Rails解説セミナー: Railsのアップグレード編

アップグレードを実践する機会は少ないので是非ご一緒に!

Page 19: Rails解説セミナー: Railsのアップグレード編

1. $ git clone \ https://github.com/yasslab/sample_apps.git

2. 対象のディレクトリに移動後: $ git init ; $ bundle exec rake db:migrate $ bundle exec rake db:test:prepare $ bundle exec rake db:populate

3. $ gem install rails --version 4.0.5 4. (Option) $ gem install rails --version 4.1.8 5. (Option) $ gem install rails --version 4.2.3

今のうちに実行しておくと良いかも

Page 20: Rails解説セミナー: Railsのアップグレード編

閑話休題

Page 21: Rails解説セミナー: Railsのアップグレード編

そもそも どういった理由で アップグレードする?

Page 22: Rails解説セミナー: Railsのアップグレード編

• Rails の最新の機能が使えるようになる

• Active Job (Async) from 4.2

• Web Console (Debug) from 4.2

• Action Cable (WebSocket) from 5.0あ

• Ruby の最新版が使えるようになる

• Ruby を上げると大体高速化します

• 例: Symbol GC によるメモリ改善 from 2.2.2

• cf. Rails 5 Requires Ruby 2.2.2+

アップグレードする理由

Page 23: Rails解説セミナー: Railsのアップグレード編

一般的な アップグレード戦略

Page 24: Rails解説セミナー: Railsのアップグレード編

• テストが役立つ重要なシーンの1つ

• 自動テストの数 ⬇ ⇨ 手動のテスト工数 ⬆

• テストが無ければまずはテストを書くところから

テストが無いのにアップグレードする のはバグの温床になります。要注意。

テストカバレッジをあげる

Page 25: Rails解説セミナー: Railsのアップグレード編

1. 対象となるリリースノートを読む

2. Railsアップグレードの手順を読む

3. Gemfile の ‘ruby’ のバージョンを上げる

4. Gemfile の ‘rails’ のバージョンを上げる

5. $ bundle update $ bundle exec rake rails:update

6. $ bundle exec rake db:reset

7. $ bundle exec spec spec/

アップグレードの大まかな手順

Page 26: Rails解説セミナー: Railsのアップグレード編

今回の アップグレード戦略

Page 27: Rails解説セミナー: Railsのアップグレード編

第12章 Railsのアップグレード #Railsチュートリアル

http://railstutorial.jp/

Rails解説セミナー

by ヤスラボ

Ruby on Rails チュートリアル 実例を使ってRailsを学ぼう

Michael Hartl (マイケル・ハートル)

Page 28: Rails解説セミナー: Railsのアップグレード編

Rails 3.2

Rails 4.0

第12章でやっていること

Page 29: Rails解説セミナー: Railsのアップグレード編

Railsチュートリアルに おける基本戦略

Page 30: Rails解説セミナー: Railsのアップグレード編

• Ruby 1.9, Rails 3.2 の Sample App を、Ruby 2.0, Rails 4.0 にアップグレードする.

• テスト結果を参考にしながらアップグレード:1. Ruby 2.0 / Rails 4.0 のアプリを新規作成.2. db/migrate/ 以下のファイルを移動.3. Model → Controller → View の順に移動.4. Strong Parameters に関する部分を更新.5. 記憶トークンを暗号化.

Rails 3.2→4.0 でのポイント

Page 31: Rails解説セミナー: Railsのアップグレード編

参考資料

Page 32: Rails解説セミナー: Railsのアップグレード編

Rails アップグレードガイドhttp://railsguides.jp/upgrading_ruby_on_rails.html

Page 33: Rails解説セミナー: Railsのアップグレード編

Rails 4.0 リリースノートhttp://railsguides.jp/4_0_release_notes.html

Page 34: Rails解説セミナー: Railsのアップグレード編

主要な変更点 (全体像)

Page 35: Rails解説セミナー: Railsのアップグレード編

主要な変更点 (左半分)

Page 36: Rails解説セミナー: Railsのアップグレード編

主要な変更点 (右半分)

Page 37: Rails解説セミナー: Railsのアップグレード編

Rails 4.0 のポイント• Ruby 2.0 が推奨 / Ruby 1.9.3 以上がサポート対象

• Strong Parameters の導入マスアサイメント脆弱性があるとエラーになる

• Turbolinks の導入HTMLの一部分だけを更新する技術: ページ遷移時にURLと、AJAXでtitleやbodyを差し替える

• Russian Doll Caching の導入ネストしたViewの断片毎にキャッシュする。各断片は依存関係のセットに応じて期限切れになる。

Page 38: Rails解説セミナー: Railsのアップグレード編

Sample App が既に4.0.5なので詳細はそちらへ

Page 39: Rails解説セミナー: Railsのアップグレード編

【注意】 Rails 4.0→4.1→4.2の 詳細な違いの解説は 次のセミナーでやります

Page 40: Rails解説セミナー: Railsのアップグレード編

今回は実際に手を動かして Railsのアップグレードに 挑戦してみましょう

Page 41: Rails解説セミナー: Railsのアップグレード編

• Ruby 2.0 / Rails 4.0 のアプリを新規作成:$ gem install rails --version 4.0.5 $ rails _4.0.5_ new sample_app; cd sample_app $ rbenv local 2.0.5-p576

• テストが実行できる環境を整える:1. リストの Gemfile や .gitignore をコピペ2. $ rails generate rspec:install で初期化3. spec_helper.rb に capybara を追加4. db/migrate ディレクトリを移動してDB作成

Rails 3.2→4.0 の大まかな

Page 42: Rails解説セミナー: Railsのアップグレード編

• テスト結果を参考にしながらアップグレード:Model → Controller → View の順に移動. A. spec 以下の該当ディレクトリを移動. B. テストが失敗することを確認 C. app 以下の該当ディレクトリ移動 D. 失敗したテストを修正していく  # gem 'sass-rails', '~> 4.0.2’  # gem 'bcrypt-ruby', '3.1.2'  # 他、assets、lib/tasksなども順々に移動

Rails 3.2→4.0 の大まかな

Page 43: Rails解説セミナー: Railsのアップグレード編

第12章 Strong Parameters を導入する

http://railstutorial.jp/

Railsチュートリアル

by ヤスラボ

Ruby on Rails チュートリアル 実例を使ってRailsを学ぼう

Michael Hartl (マイケル・ハートル)

Page 44: Rails解説セミナー: Railsのアップグレード編

• attr_accessor => #{table名}_params メソッド

• attr_accessor で生成されるメソッド- 各カラムに対する getter - 各カラムに対する setter

• *_params メソッドでやること- 受け取るparamsを制限する- 更新可能なtable/columnを明示する

Strong Parameters を導入

Page 45: Rails解説セミナー: Railsのアップグレード編

• Strong Parameters に関する部分を更新:Railsチュートリアル (4.0版) と同じように実装する # params.require(:TABLE).permit(…) を実装 # 実装後、Gemfile から次のgemを取り除く # gem 'protected_attributes'あ

Rails 3.2→4.0 の大まかな

Page 46: Rails解説セミナー: Railsのアップグレード編

第12章 セキュリティのアップデート

http://railstutorial.jp/

Railsチュートリアル

by ヤスラボ

Ruby on Rails チュートリアル 実例を使ってRailsを学ぼう

Michael Hartl (マイケル・ハートル)

Page 47: Rails解説セミナー: Railsのアップグレード編

• 秘密トークンの動的生成secure_token メソッドを実装し、動的に秘密鍵を生成する.* ハードコードされた秘密トークンは公開しない!

• 記憶トークン (remember_token) の暗号化コールバックを利用して, 記憶トークンをユーザーのブラウザに保存した後 &&データベースに保存する前に暗号化する.

セキュリティのアップデート

Page 48: Rails解説セミナー: Railsのアップグレード編

• 記憶トークンを暗号化:Railsチュートリアル (4.0版) と同じように実装する # config/initializers/secret_token.rb で動的生成 # user.rbやsessions_helperに記憶トークンを実装 # 同様にして、テストにも記憶トークンを実装

Rails 3.2→4.0 の大まかな

Page 49: Rails解説セミナー: Railsのアップグレード編

お疲れ様でした

Page 50: Rails解説セミナー: Railsのアップグレード編

Rails 3.2

Rails 4.0

今回やったこと

Page 51: Rails解説セミナー: Railsのアップグレード編

時間があれば (or 後半?) Rails 4.0 → 4.2 も.

Page 52: Rails解説セミナー: Railsのアップグレード編

Rails 4.0.5

Rails 4.2.3

Rails 4.1.8

Page 53: Rails解説セミナー: Railsのアップグレード編

• Ruby 1.9, Rails 3.2 の Sample App を、Ruby 2.0, Rails 4.0 にアップグレードする.

• テスト結果を参考にしながらアップグレード:1. Ruby 2.0 / Rails 4.0 のアプリを新規作成.2. db/migrate/ 以下のファイルを移動.3. Model → Controller → View の順に移動.4. Strong Parameters に関する部分を更新.5. 記憶トークンを暗号化.

Rails 3.2→4.0 でのポイント

Page 54: Rails解説セミナー: Railsのアップグレード編

• テストが役立つ重要なシーンの1つ

• 自動テストの数 ⬇ ⇨ 手動のテスト工数 ⬆

• テストが無ければまずはテストを書くところから

テストが無いのにアップグレードする のはバグの温床になります。要注意。

テストカバレッジをあげる

Page 55: Rails解説セミナー: Railsのアップグレード編

• Rails の最新の機能が使えるようになる

• Active Job (Async) from 4.2

• Web Console (Debug) from 4.2

• Action Cable (WebSocket) from 5.0あ

• Ruby の最新版が使えるようになる

• Ruby を上げると大体高速化します

• e.g. Symbol GC によるメモリ改善 from 2.2.2

アップグレードする理由

Page 56: Rails解説セミナー: Railsのアップグレード編

参考情報

Page 57: Rails解説セミナー: Railsのアップグレード編

Rails スクリーンキャスト (第12章)http://railstutorial.jp/screencasts

Page 58: Rails解説セミナー: Railsのアップグレード編

Rails アップグレードガイドhttp://railsguides.jp/upgrading_ruby_on_rails.html

Page 59: Rails解説セミナー: Railsのアップグレード編

Rails 4.0 リリースノートhttp://railsguides.jp/4_0_release_notes.html

Page 60: Rails解説セミナー: Railsのアップグレード編

お知らせ

Page 61: Rails解説セミナー: Railsのアップグレード編

http://coedo-rails.doorkeeper.jp/Ruby / Ruby on Rails ビギナーズ倶楽部

Page 62: Rails解説セミナー: Railsのアップグレード編

Ruby/Rails 学習者のための懇親会 通知はコチラから→ https://coedo-rails.doorkeeper.jp/

Page 63: Rails解説セミナー: Railsのアップグレード編

http://railsguides.jp/options.htmlRails解説セミナー (7/18-21)

Page 64: Rails解説セミナー: Railsのアップグレード編

Railsアップグレード編

Rails解説セミナー

http://railsguides.jp/