Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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...
Ready?
解説セミナーを
進めていきましょう!
Railsのアップグレード
Rails解説セミナー
http://railsguides.jp/
• 中級者∼上級者向けの大型リファレンス
• 読み進める順番は特になく、機能毎に解説:
• e.g. Active Record の基礎、バリデーション
• e.g. Action View の概要、フォームヘルパー
• e.g. Action...
今回のテーマ
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...
閑話休題
そもそも
どういった理由で
アップグレードする?
• Rails の最新の機能が使えるようになる
• Active Job (Async) from 4.2
• Web Console (Debug) from 4.2
• Action Cable (WebSocket) from 5.0あ
...
一般的な
アップグレード戦略
• テストが役立つ重要なシーンの1つ
• 自動テストの数 ⬇ ⇨ 手動のテスト工数 ⬆
• テストが無ければまずはテストを書くところから
テストが無いのにアップグレードする
のはバグの温床になります。要注意。
テストカバレッジをあげる
1. 対象となるリリースノートを読む
2. Railsアップグレードの手順を読む
3. Gemfile の ‘ruby’ のバージョンを上げる
4. Gemfile の ‘rails’ のバージョンを上げる
5. $ bundle update...
今回の
アップグレード戦略
第12章 Railsのアップグレード
#Railsチュートリアル
http://railstutorial.jp/
Rails解説セミナー
by ヤスラボ
Ruby on Rails チュートリアル
実例を使ってRailsを学ぼう
Michae...
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 のア...
参考資料
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 の導入

HTM...
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

$ r...
• テスト結果を参考にしながらアップグレード:

Model → Controller → View の順に移動.

 A. spec 以下の該当ディレクトリを移動.

 B. テストが失敗することを確認

 C. app 以下の該当ディレクト...
第12章
Strong Parameters を導入する
http://railstutorial.jp/
Railsチュートリアル
by ヤスラボ
Ruby on Rails チュートリアル
実例を使ってRailsを学ぼう
Michael H...
• attr_accessor => #{table名}_params メソッド
• attr_accessor で生成されるメソッド

- 各カラムに対する getter

- 各カラムに対する setter
• *_params メソッドで...
• Strong Parameters に関する部分を更新:

Railsチュートリアル (4.0版) と同じように実装する

 # params.require(:TABLE).permit(…) を実装

 # 実装後、Gemfile から...
第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
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 のア...
• テストが役立つ重要なシーンの1つ
• 自動テストの数 ⬇ ⇨ 手動のテスト工数 ⬆
• テストが無ければまずはテストを書くところから
テストが無いのにアップグレードする
のはバグの温床になります。要注意。
テストカバレッジをあげる
• Rails の最新の機能が使えるようになる
• Active Job (Async) from 4.2
• Web Console (Debug) from 4.2
• Action Cable (WebSocket) from 5.0あ
...
参考情報
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.html
Rails解説セミナー (7/18-21)
Railsアップグレード編
Rails解説セミナー
http://railsguides.jp/
Upcoming SlideShare
Loading in …5
×

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

802 views

Published on

Railsガイド解説セミナーのスライド資料です

Railsガイド: http://railsguides.jp/
Railsガイド解説セミナー: http://railsguides.jp/options.html#seminar


【関連リンク】
Railsチュートリアル: http://railstutorial.jp/
Railsチュートリアル解説セミナー: http://railstutorial.jp/seminars
Railsスクリーンキャスト: http://railstutorial.jp/screencasts
Railsビギナーズ倶楽部: http://coedo-rails.doorkeeper.jp/

Published in: Education
  • Be the first to comment

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

  1. 1. Railsアップグレード編 Rails解説セミナー http://railsguides.jp/
  2. 2. セミナーを 始める前に
  3. 3. 講義中に参照したリンクはコメント欄で (質問もお気軽に) 講師のターミナルは下記 URL から閲覧できます :) http://screenx.tv/yasulab
  4. 4. Slide is in SlideShare! http://www.slideshare.net/yasulab/presentations
  5. 5. 質問はいつでもお気軽に! 個別相談は休憩や終了後に :)
  6. 6. Sample App で実験 :) https://github.com/yasslab/sample_apps
  7. 7. 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 下準備
  8. 8. Ready?
  9. 9. 解説セミナーを 進めていきましょう!
  10. 10. Railsのアップグレード Rails解説セミナー http://railsguides.jp/
  11. 11. • 中級者∼上級者向けの大型リファレンス • 読み進める順番は特になく、機能毎に解説: • e.g. Active Record の基礎、バリデーション • e.g. Action View の概要、フォームヘルパー • e.g. Action Controller の概要、ルーティング • 例外: Railsをはじめよう → Rails チュートリアル • ウェブ版は全編無料! http://railsguides.jp/ Railsガイドとは?
  12. 12. 今回のテーマ
  13. 13. Rails アップグレードガイド http://railsguides.jp/upgrading_ruby_on_rails.html
  14. 14. メジャーアップグレード を体験してみよう! 今回やること (そして苦しみを味わう!)
  15. 15. Rails 3.2 Rails 4.0
  16. 16. マイナーアップグレード も体験してみよう! 時間があれば (そして苦しみを味わう!)
  17. 17. Rails 4.0.5 Rails 4.2.3 Rails 4.1.8
  18. 18. アップグレードを
 実践する機会は少ない ので是非ご一緒に!
  19. 19. 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 今のうちに実行しておくと良いかも
  20. 20. 閑話休題
  21. 21. そもそも どういった理由で アップグレードする?
  22. 22. • 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+ アップグレードする理由
  23. 23. 一般的な アップグレード戦略
  24. 24. • テストが役立つ重要なシーンの1つ • 自動テストの数 ⬇ ⇨ 手動のテスト工数 ⬆ • テストが無ければまずはテストを書くところから テストが無いのにアップグレードする のはバグの温床になります。要注意。 テストカバレッジをあげる
  25. 25. 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/ アップグレードの大まかな手順
  26. 26. 今回の アップグレード戦略
  27. 27. 第12章 Railsのアップグレード #Railsチュートリアル http://railstutorial.jp/ Rails解説セミナー by ヤスラボ Ruby on Rails チュートリアル 実例を使ってRailsを学ぼう Michael Hartl (マイケル・ハートル)
  28. 28. Rails 3.2 Rails 4.0 第12章でやっていること
  29. 29. Railsチュートリアルに おける基本戦略
  30. 30. • 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 でのポイント
  31. 31. 参考資料
  32. 32. Rails アップグレードガイド http://railsguides.jp/upgrading_ruby_on_rails.html
  33. 33. Rails 4.0 リリースノート http://railsguides.jp/4_0_release_notes.html
  34. 34. 主要な変更点 (全体像)
  35. 35. 主要な変更点 (左半分)
  36. 36. 主要な変更点 (右半分)
  37. 37. Rails 4.0 のポイント • Ruby 2.0 が推奨 / Ruby 1.9.3 以上がサポート対象 • Strong Parameters の導入
 マスアサイメント脆弱性があるとエラーになる • Turbolinks の導入
 HTMLの一部分だけを更新する技術: ページ遷移時 にURLと、AJAXでtitleやbodyを差し替える • Russian Doll Caching の導入
 ネストしたViewの断片毎にキャッシュする。各断 片は依存関係のセットに応じて期限切れになる。
  38. 38. Sample App が 既に4.0.5なので 詳細はそちらへ
  39. 39. 【注意】 Rails 4.0→4.1→4.2の 詳細な違いの解説は 次のセミナーでやります
  40. 40. 今回は実際に手を動かして Railsのアップグレードに 挑戦してみましょう
  41. 41. • 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 の大まかな
  42. 42. • テスト結果を参考にしながらアップグレード:
 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 の大まかな
  43. 43. 第12章 Strong Parameters を導入する http://railstutorial.jp/ Railsチュートリアル by ヤスラボ Ruby on Rails チュートリアル 実例を使ってRailsを学ぼう Michael Hartl (マイケル・ハートル)
  44. 44. • attr_accessor => #{table名}_params メソッド • attr_accessor で生成されるメソッド
 - 各カラムに対する getter
 - 各カラムに対する setter • *_params メソッドでやること
 - 受け取るparamsを制限する
 - 更新可能なtable/columnを明示する Strong Parameters を導入
  45. 45. • Strong Parameters に関する部分を更新:
 Railsチュートリアル (4.0版) と同じように実装する
  # params.require(:TABLE).permit(…) を実装
  # 実装後、Gemfile から次のgemを取り除く
  # gem 'protected_attributes'あ Rails 3.2→4.0 の大まかな
  46. 46. 第12章 セキュリティのアップデート http://railstutorial.jp/ Railsチュートリアル by ヤスラボ Ruby on Rails チュートリアル 実例を使ってRailsを学ぼう Michael Hartl (マイケル・ハートル)
  47. 47. • 秘密トークンの動的生成
 secure_token メソッドを実装し、動的に秘密 を生成する.
 * ハードコードされた秘密トークンは公開しない! • 記憶トークン (remember_token) の暗号化
 コールバックを利用して, 記憶トークンを
 ユーザーのブラウザに保存した後 &&
 データベースに保存する前に暗号化する. セキュリティのアップデート
  48. 48. • 記憶トークンを暗号化:
 Railsチュートリアル (4.0版) と同じように実装する
  # config/initializers/secret_token.rb で動的生成
  # user.rbやsessions_helperに記憶トークンを実装
  # 同様にして、テストにも記憶トークンを実装 Rails 3.2→4.0 の大まかな
  49. 49. お疲れ様でした
  50. 50. Rails 3.2 Rails 4.0 今回やったこと
  51. 51. 時間があれば (or 後半?) Rails 4.0 → 4.2 も.
  52. 52. Rails 4.0.5 Rails 4.2.3 Rails 4.1.8
  53. 53. • 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 でのポイント
  54. 54. • テストが役立つ重要なシーンの1つ • 自動テストの数 ⬇ ⇨ 手動のテスト工数 ⬆ • テストが無ければまずはテストを書くところから テストが無いのにアップグレードする のはバグの温床になります。要注意。 テストカバレッジをあげる
  55. 55. • 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 アップグレードする理由
  56. 56. 参考情報
  57. 57. Rails スクリーンキャスト (第12章) http://railstutorial.jp/screencasts
  58. 58. Rails アップグレードガイド http://railsguides.jp/upgrading_ruby_on_rails.html
  59. 59. Rails 4.0 リリースノート http://railsguides.jp/4_0_release_notes.html
  60. 60. お知らせ
  61. 61. http://coedo-rails.doorkeeper.jp/ Ruby / Ruby on Rails ビギナーズ倶楽部
  62. 62. Ruby/Rails 学習者のための懇親会 通知はコチラから→ https://coedo-rails.doorkeeper.jp/
  63. 63. http://railsguides.jp/options.html Rails解説セミナー (7/18-21)
  64. 64. Railsアップグレード編 Rails解説セミナー http://railsguides.jp/

×