読者です 読者をやめる 読者になる 読者になる

ぞえの技術めも

Ruby on Rails勉強中

【115日目】【1日20分のRailsチュートリアル】【第9章】第9章の内容をコミット&本番環境で動かしてみる

Ruby on Railsチュートリアル(第3版)

今日は「9.5 最後に」から。

9.5 最後に

メールアドレスを使ってアカウントを有効化する機能と (すなわち本当に有効なメールアドレスか検証するプロセスと)、ユーザーがパスワードを忘れてしまったときのためのパスワードリセット機能です。

そんな機能まで…!
チュートリアルでしょ、って思ってたけどこれやれば実際のサービスに必要な最低限の機能は実装できるんだね。。

次の章に進む前に、すべての変更をmasterブランチにマージしておきましょう。

変更をコミットしてmasterブランチにマージする。

$ git add -A
$ git commit -m "Finish user edit, update, index, and destroy actions"
$ git checkout master
$ git merge updating-users
$ git push

コミットできました。

f:id:kt_zoe:20170228124652p:plain

アプリケーションを本番展開したり、サンプルデータを本番データとして作成することもできます (本番データベースをリセットするにはpg:resetタスクを使用します)。

本番環境にもpushしておきましょう。

$ bundle exec rake test
$ git push heroku
$ heroku pg:reset DATABASE
$ heroku run rake db:migrate
$ heroku run rake db:seed
$ heroku restart

$ heroku pg:reset DATABASEで下記のようなワーニングが表示されたので言われた通りにコンソールにinfinite-depths-40805入力した。
データベースリセットしてもいいの?ほんとに?っていう警告っぽい。

 !    WARNING: Destructive Action
 !    This command will affect the app: infinite-depths-40805
 !    To proceed, type "infinite-depths-40805" or re-run this command with --confirm infinite-depths-40805

それは、図9.16が示すように、サンプルユーザーの表示順序が変化してしまい、図9.11にあるようなローカル環境での表示順序と異なってしまうことです。

f:id:kt_zoe:20170228124729p:plain

ほんとだ…1ページ目の一番上にあったはずの管理者権限のユーザーがいない。。。

f:id:kt_zoe:20170228124739p:plain

4ページ目の一番下にいた。

9.5.1 本章のまとめ

・Strong Parametersを使うことで、安全にWeb上から更新させることができる
・beforeフィルターを使うと、特定のアクションが実行される直前にメソッドを呼び出すことができる
・beforeフィルターを使って、認可 (アクセス制御) を実現した
・認可に対するテストでは、特定のHTTPリクエストを直接送信する低級なテストと、ブラウザの操作をシミュレーションする高級なテスト (統合テスト) の2つを利用した

管理者権限も肝な機能だけどこの辺が難しいかなぁ…。1回じゃなかなか身につかない。

今日の学習時間は【33分】

次は「9.6 演習」から。