狠狠撸

狠狠撸Share a Scribd company logo
Railsアップグレード編
Rails解説セミナー
http://railsguides.jp/
セミナーを
始める前に
講義中に参照したリンクはコメント欄で (質問もお気軽に)
講師のターミナルは下記 URL から閲覧できます :)
http://screenx.tv/yasulab
狠狠撸 is in 狠狠撸Share!
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.html
Rails解説セミナー (7/18-21)
Railsアップグレード編
Rails解説セミナー
http://railsguides.jp/

More Related Content

Rails解説セミナー: Railsのアッフ?ク?レート?編