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

Post on 15-Apr-2017

727 Views

Category:

Education

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Railsアップグレード編

Rails解説セミナー

http://railsguides.jp/

セミナーを 始める前に

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

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

http://screenx.tv/yasulab

Slide is in SlideShare!

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

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

Sample App で実験 :)

https://github.com/yasslab/sample_apps

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

下準備

Ready?

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

Railsのアップグレード

Rails解説セミナー

http://railsguides.jp/

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

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

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

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

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

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

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

Railsガイドとは?

今回のテーマ

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

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

今回やること

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

Rails 3.2

Rails 4.0

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

時間があれば

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

Rails 4.0.5

Rails 4.2.3

Rails 4.1.8

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

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

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

閑話休題

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

• 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+

アップグレードする理由

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

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

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

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

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

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

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/

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

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

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

http://railstutorial.jp/

Rails解説セミナー

by ヤスラボ

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

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

Rails 3.2

Rails 4.0

第12章でやっていること

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 でのポイント

参考資料

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

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

主要な変更点 (全体像)

主要な変更点 (左半分)

主要な変更点 (右半分)

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

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

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

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

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

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

今回は実際に手を動かして 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 の大まかな

• テスト結果を参考にしながらアップグレード: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 の大まかな

第12章 Strong Parameters を導入する

http://railstutorial.jp/

Railsチュートリアル

by ヤスラボ

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

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

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

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

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

Strong Parameters を導入

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

Rails 3.2→4.0 の大まかな

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

http://railstutorial.jp/

Railsチュートリアル

by ヤスラボ

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

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

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

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

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

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

Rails 3.2→4.0 の大まかな

お疲れ様でした

Rails 3.2

Rails 4.0

今回やったこと

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

Rails 4.0.5

Rails 4.2.3

Rails 4.1.8

• 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 でのポイント

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

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

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

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

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

• 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

アップグレードする理由

参考情報

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

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

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

お知らせ

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

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

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

Railsアップグレード編

Rails解説セミナー

http://railsguides.jp/

top related