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

ぞえの技術めも

Ruby on Rails勉強中

【95日目】【1日20分のRailsチュートリアル】【第8章】演習の2.

Ruby on Railsチュートリアル(第3版) 今日は「8.6 演習」の2.から。 8.6 演習 railstutorial.jp 2. 8.4.6では、現在のアプリケーション設計では、リスト8.51の統合テストで仮想のremember_token属性にアクセスする手段がないことを説明しました。 実は、ass…

【94日目】【1日20分のRailsチュートリアル】【第8章】演習の1.

Ruby on Railsチュートリアル(第3版) 今日は「8.6 演習」から。 8.6 演習 railstutorial.jp なお、演習とチュートリアル本編の食い違いを避ける方法については、演習用のトピックブランチに追加したメモ (3.6) を参考にしてください。 演習用にブランチ切っ…

【93日目】【1日20分のRailsチュートリアル】【第8章】第8章のまとめ

Ruby on Railsチュートリアル(第3版) 今日は「8.5 最後に」から。 8.5 最後に 次の章に進む前に、変更をmasterブランチにマージしておきましょう。 テストを実行してエラーが出ないことを確認したらコミットしてmasterブランチにマージ。 $ bundle exec rake…

【92日目】【1日20分のRailsチュートリアル】【第8章】記憶ブランチをテストする

Ruby on Railsチュートリアル(第3版) 今日は「8.4.6 Rememberのテスト」の「記憶ブランチをテストする」から。 8.4.6 Rememberのテスト 記憶ブランチをテストする current_user内のある分岐部分については、これまでまったくテストが行われていないのです。 …

【91日目】【1日20分のRailsチュートリアル】【第8章】“Remember me”チェックボックスをテストする

Ruby on Railsチュートリアル(第3版) 今日は「8.4.6 Rememberのテスト」から。 8.4.6 Rememberのテスト しかしもっと重要な理由は、ユーザーを永続化するコードの中心部分が、実はまだまったくテストされていないからです。 そうだっけ…そうかもしれない。。…

【90日目】【1日20分のRailsチュートリアル】【第8章】“Remember me”チェックボックスを追加する

Ruby on Railsチュートリアル(第3版) 今日は「8.4.5 “Remember me” チェックボックス」から。 8.4.5 “Remember me” チェックボックス 今回の実装は、リスト8.2のログインフォームにチェックボックスを追加するところから始めます。 ログインフォームのビュー…

【89日目】【1日20分のRailsチュートリアル】【第8章】2つの目立たないバグに対するテストを作成する

Ruby on Railsチュートリアル(第3版) 今日は「8.4.4 2つの目立たないバグ」のテストを書くところから。 8.4.4 2つの目立たないバグ テスト駆動開発は、この種の地味なバグ修正にはうってつけです。そこで、2つのエラーをキャッチするテストを書くことにし…

【88日目】【1日20分のRailsチュートリアル】【第8章】2つの目立たないバグの原因を理解する

Ruby on Railsチュートリアル(第3版) 今日は「8.4.4 2つの目立たないバグ」から。 8.4.4 2つの目立たないバグ 実は小さなバグが2つ残っています。2つのバグは互いに強く関連しています。 へ~。まとめるとこんな感じらしい。 (1)同じサイトに複数のウィ…

【87日目】【1日20分のRailsチュートリアル】【第8章】ログアウトで保持しているユーザー情報を削除する

Ruby on Railsチュートリアル(第3版) 今日は「8.4.3 ユーザーを忘れる」から。 8.4.3 ユーザーを忘れる ユーザーがログアウトできるようにするために、ユーザーを記憶するためのメソッドと同様の方法で、ユーザーを忘れるためのメソッドを定義します。 どう…

【86日目】【1日20分のRailsチュートリアル】【第8章】ログイン状態の保持機能を追加する

Ruby on Railsチュートリアル(第3版) 今日は「8.4.2 ログイン状態の保持」のトークンが記憶ダイジェストと一致するか確認するから。 8.4.2 ログイン状態の保持 攻撃者が仮に両方のcookiesを奪い取ることに成功したとしても、本物のユーザーがログアウトする…

【85日目】【1日20分のRailsチュートリアル】【第8章】記憶トークンとユーザーIDをcookiesに保存する

Ruby on Railsチュートリアル(第3版) 今日は「8.4.2 ログイン状態の保持」から。 8.4.2 ログイン状態の保持 個別のcookiesは、ひとつのvalue (値) と、オプションのexpires (有効期限) からできています。 valueには記憶トークンの値を設定すればいいらしい…

【84日目】【1日20分のRailsチュートリアル】【第8章】セッション永続化のために記憶トークンを生成する

Ruby on Railsチュートリアル(第3版) 今日は「8.4 [このアカウント設定を保存する]」から。 8.4 [このアカウント設定を保存する] 本節では、ユーザーログインをデフォルトで保持するように変更し、 (中略) 前者はGitHubやBitbucketで、後者はFacebookやTwi…

【83日目】【1日20分のRailsチュートリアル】【第8章】ログアウト機能を追加する

Ruby on Railsチュートリアル(第3版) 今日は「8.3 ログアウト」から。 8.3 ログアウト ユーザーセッションを破棄するための有効なアクションをコントローラで作成するだけで済みます。 ユーザーセッションを破棄するlog_outメソッドをSessionヘルパーに追加…

【82日目】【1日20分のRailsチュートリアル】【第8章】ユーザー登録時にログインするようにする

Ruby on Railsチュートリアル(第3版) 今日は「8.2.5 ユーザー登録時にログイン」から。 8.2.5 ユーザー登録時にログイン 以上で認証システムが動作するようになりましたが、今のままでは、登録の終わったユーザーがデフォルトではログインしていないので、 …

【81日目】【1日20分のRailsチュートリアル】【第8章】レイアウト変更確認用テストを追加する

Ruby on Railsチュートリアル(第3版) 今日は「8.2.4 レイアウトの変更をテストする」のテストを作成するところから。 8.2.4 レイアウトの変更をテストする ハッシュ化されていない生のパスワードも参照できると便利です。 (中略) この状況を切り抜けるため…

【80日目】【1日20分のRailsチュートリアル】【第8章】テスト用ユーザーを準備する

Ruby on Railsチュートリアル(第3版) 今日は「8.2.4 レイアウトの変更をテストする」から。 8.2.4 レイアウトの変更をテストする ログイン用のパスを開く セッション用パスに有効な情報をpostする ログイン用リンクが表示されなくなったことを確認する ログ…

【79日目】【1日20分のRailsチュートリアル】【第8章】ログイン状態によってレイアウトを変更する

Ruby on Railsチュートリアル(第3版) 今日は「8.2.3 レイアウトリンクを変更する」から。 8.2.3 レイアウトリンクを変更する ログイン機能の最初の具体的な応用として、ユーザーがログインしているときとそうでないときでレイアウトを変更してみましょう。 …

【78日目】【1日20分のRailsチュートリアル】【第8章】ログインしているユーザーのユーザー名を取得する

Ruby on Railsチュートリアル(第3版) 今日は「8.2.2 現在のユーザー」から。 8.2.2 現在のユーザー 今度はそのユーザーIDを別のページで取り出すことにしましょう。 そのためには、current_userメソッドを定義して、セッションIDに対応するユーザー名をデー…

【77日目】【1日20分のRailsチュートリアル】【第8章】一時セッションでユーザーをログインできるようにする

Ruby on Railsチュートリアル(第3版) 今日は「8.2 ログイン」から。 Ruby on Railsチュートリアル 第4版が公開されましたが、 途中で切り替えるわけにもいかないので第3版で進めます。 8.2 ログイン この節では、cookiesを使用する一時セッションでユーザー…

【76日目】【1日20分のRailsチュートリアル】【第8章】フラッシュメッセージのテストを作成する

Ruby on Railsチュートリアル(第3版) 今日は「8.1.5 フラッシュのテスト」から。 8.1.5 フラッシュのテスト アプリケーションのログインの挙動をテストするために、最初に統合テストを生成します。 生成します。 $ rails generate integration_test users_lo…

【75日目】【1日20分のRailsチュートリアル】【第8章】ログイン失敗時のエラーメッセージを表示する

Ruby on Railsチュートリアル(第3版) 今日は「8.1.4 フラッシュメッセージを表示する」から。 8.1.4 フラッシュメッセージを表示する ログインに失敗したときには代わりにフラッシュメッセージを表示することにします。最初のコードをリスト8.6に示します (…

【74日目】【1日20分のRailsチュートリアル】【第8章】ユーザーの検索と認証処理の実装

Ruby on Railsチュートリアル(第3版) 今日は「8.1.3 ユーザーの検索と認証」から。 8.1.3 ユーザーの検索と認証 最初に最小限のcreateアクションをSessionsコントローラで定義し、空のnewアクションとdestroyアクションもついでに作成しておきましょう。 作…

【73日目】【1日20分のRailsチュートリアル】【第8章】Sessionsコントローラとログインフォームの作成

Ruby on Railsチュートリアル(第3版) 今日は「8.1.1 Sessionsコントローラ」から。 8.1.1 Sessionsコントローラ 最初に、Sessionsコントローラとnewアクションを生成します。 作りました。 $ rails generate controller Sessions new newアクションを生成す…

【72日目】【1日20分のRailsチュートリアル】【第8章】第8章向けの作業ブランチを作成

Ruby on Railsチュートリアル(第3版) 今日から第8章! 第8章 ログイン、ログアウト 第7章でWebサイトでの新規ユーザー登録が行えるようになりましたので、今度はユーザーがログインやログアウトを行えるようにしましょう。 ユーザーのログイン/ログアウトは…

【71日目】【1日20分のRailsチュートリアル】【第7章】演習の4.(flash用のHTMLを読みやすくする)

Ruby on Railsチュートリアル(第3版) 今日は「7.7 演習」の4.から。 7.7 演習 4. 7.4.2で触れたように、flash用のHTML (リスト7.25) は読みにくいです。 より読みやすくしたリスト7.34のコードに対してテストスイートを実行し、こちらも正常に動作すること…

【70日目】【1日20分のRailsチュートリアル】【第7章】演習の3.(ユーザー登録後のflashに対するテストを追加)

Ruby on Railsチュートリアル(第3版) 今日は「7.7 演習」の3.から。 7.7 演習 7.4.2で実装したflashに対するテストを書いてみてください。どのくらい細かくテストするかはお任せします。 リスト7.33に最小限のテンプレートを用意しておいたので、参考にして…

【69日目】【1日20分のRailsチュートリアル】【第7章】演習の2.(無効なユーザー登録時のエラーメッセージのテストを追加)

Ruby on Railsチュートリアル(第3版) 今日は「7.7 演習」の2.から。 7.7 演習 リスト7.18で実装したエラーメッセージに対するテストを書いてみてください。 どのくらい細かくテストするかはお任せします。リスト7.32にテンプレートを用意しておいたので、参…

【68日目】【1日20分のRailsチュートリアル】【第7章】Rubyのバージョンと第7章のまとめと演習の1.

Ruby on Railsチュートリアル(第3版) 今日は「7.5.3 Rubyのバージョン番号」から。 7.5.3 Rubyのバージョン番号 HerokuのデプロイするときにRubyのバージョンを明示的に指定してくださいというワーニングが表示される、という話。 うーん、、、出てたっけ。…

【67日目】【1日20分のRailsチュートリアル】【第7章】本番環境用Webサーバーの設定

Ruby on Railsチュートリアル(第3版) 今日は「7.5.2 本番環境用Webサーバー」から。 7.5.2 本番環境用Webサーバー WEBrickは本番環境として適切なWebサーバではありません。よって、今回はWEBrickをPumaというWebサーバに置き換えてみます。 はい。 まずはpu…

【66日目】【1日20分のRailsチュートリアル】【第7章】masterブランチへのマージと本番環境でのSSL対応

Ruby on Railsチュートリアル(第3版) 今日は「7.5 プロのデプロイ」から。 7.5 プロのデプロイ ユーザー登録をセキュアにするために、本番用のアプリケーションに重要な機能を追加していきます。 その後、デフォルトのWebサーバを実際の世界で使われているWe…

【65日目】【1日20分のRailsチュートリアル】【第7章】ユーザー登録成功時のテスト

Ruby on Railsチュートリアル(第3版) 今日は「7.4.4 成功時のテスト」から。 7.4.4 成功時のテスト 有効な情報を送信して、ユーザーが作成されたことを確認します。 assert_differenceを使ってPOSTリクエスト送った後にユーザー数が1増えていることを確認す…

【64日目】【1日20分のRailsチュートリアル】【第7章】実際のユーザー登録を実施する

Ruby on Railsチュートリアル(第3版) 今日は「7.4.3 実際のユーザー登録」から。 7.4.3 実際のユーザー登録 名前を “Rails Tutorial”、メールアドレスを “example@railstutorial.org”として登録してみましょう。 してみましょう。 サーバーを起動して $ rail…

【63日目】【1日20分のRailsチュートリアル】【第7章】ユーザー登録フォームを完成させる

Ruby on Railsチュートリアル(第3版) 今日は「7.4 ユーザー登録成功」から。 7.4 ユーザー登録成功 まずは、ユーザーを保存できるようにします。保存に成功すると、ユーザー情報は自動的にデータベースに登録されます。 次にブラウザの表示をリダイレクトし…

【62日目】【1日20分のRailsチュートリアル】【第7章】ユーザー登録失敗時のテストを生成する

Ruby on Railsチュートリアル(第3版) 今日は「7.3.4 失敗時のテスト」から。 7.3.4 失敗時のテスト Railsではフォーム用のテストを書くことができ、こういったプロセスを自動化することができます。 本項では、無効な送信をしたときの正しい振る舞いについて…

【61日目】【1日20分のRailsチュートリアル】【第7章】ユーザー登録のエラーメッセージを表示する

Ruby on Railsチュートリアル(第3版) 今日は「7.3.3 ユーザー登録のエラーメッセージ」から。 7.3.3 ユーザー登録のエラーメッセージ ユーザー登録に失敗した場合の最後の手順として、問題が生じたためにユーザー登録が行われなかったということをユーザーに…

【60日目】【1日20分のRailsチュートリアル】【第7章】Strong parametersで悪意のあるアクセスを防ぐ

Ruby on Railsチュートリアル(第3版) 今日は「7.3.2 Strong parameters」から。 7.3.2 Strong parameters @user = User.new(params[:user]) # 実装は終わっていないことに注意! リスト7.16のコメントと、上の再録コメントでも重ねて指摘しているように、この…

【59日目】【1日20分のRailsチュートリアル】【第7章】ユーザー登録失敗

Ruby on Railsチュートリアル(第3版) 今日は「7.3 ユーザー登録失敗」から。 7.3 ユーザー登録失敗 無効なデータ送信を受け付けるユーザー登録フォームを作成し、ユーザー登録フォームを更新してエラーの一覧を表示します。 ユーザー名が空白になってないか…

【58日目】【1日20分のRailsチュートリアル】【第7章】ユーザー登録用のフォームを作成する

Ruby on Railsチュートリアル(第3版) 今日は「7.2.1 form_forを使用するから。 7.2.1 form_forを使用する ユーザー登録ページで重要な点は、ユーザー登録に欠かせない情報を入力するためのformです。 formタグのことですね。 これを行うには、Railsでform_fo…

【57日目】【1日20分のRailsチュートリアル】【第7章】プロフィールページのレイアウト調整とユーザー登録フォーム作成の準備

Ruby on Railsチュートリアル(第3版) 今日は「Gravatar画像とサイドバー」のレイアウト整えるところから。 7.1.4 Gravatar画像とサイドバー 図7.1のモックアップに近づけるために、ユーザーのサイドバーの最初のバージョンを作りましょう。 プロフィール画像…

【56日目】【1日20分のRailsチュートリアル】【第7章】デバッガーの使い方とGravatar画像の表示

Ruby on Railsチュートリアル(第3版) 今日は「7.1.3 デバッガー」から。 7.1.3 デバッガー Rails 4.2からは、byebug gemを使ってもっと直接的にデバッグできるようになりました (リスト3.2)。 へー。byebugはもうGemfileに書いてるのですぐ使えるらしい。 sh…

【55日目】【1日20分のRailsチュートリアル】【第7章】ユーザー情報を仮ビューに表示する

Ruby on Railsチュートリアル(第3版) 今日は「7.1.2 Usersリソース」のユーザー情報を表示する仮ビューを作成するところから。 7.1.2 Usersリソース ユーザーを表示するために、標準的なRailsの場所を使用することにします。app/views/users/show.html.erbで…

【54日目】【1日20分のRailsチュートリアル】【第7章】デバッグ出力を整形、Usersリソースを設定

Ruby on Railsチュートリアル(第3版) 今日は「7.1.1 デバッグとRails環境」のデバッグ出力をきれいにするところから。 7.1.1 デバッグとRails環境 デバッグ出力をきれいに整形するために、第5章で作成したカスタムスタイルシートをリスト7.2のように追加しま…

【53日目】【1日20分のRailsチュートリアル】【第7章】開発環境でのデバッグの準備

Ruby on Railsチュートリアル(第3版) 今日は「第7章 ユーザー登録」から。 遂に後半戦! 第7章 ユーザー登録 Userモデルができあがったので、いよいよユーザー登録機能を追加しましょう。 第6章でユーザーを登録する中身を作ったので第7章ではUIメイン、かな…

【52日目】【1日20分のRailsチュートリアル】【第6章】演習の2.と3.

Ruby on Railsチュートリアル(第3版) 今日は「6.5 演習」の2.から。 6.5 演習 before_saveコールバック内でemail.downcase!と書き、email属性を直接変更してもよいことを、テストスイートを走らせて確認してください (リスト6.42のように書いてもよいことを…

【51日目】【1日20分のRailsチュートリアル】【第6章】第6章のコミットと演習の1.

Ruby on Railsチュートリアル(第3版) 今日は「6.4 最後に」から。 6.4 最後に Gitを使用している方は、しばらくコミットしていなかったのであれば、この時点でコミットしておくのがよいでしょう。 コミットしてないのでコミットします。 $ bundle exec rake …

【50日目】【1日20分のRailsチュートリアル】【第6章】ユーザーの作成とパスワード認証

Ruby on Railsチュートリアル(第3版) 今日は「6.3.4 ユーザーの作成と認証」から。 6.3.4 ユーザーの作成と認証 今回はRailsコンソールを使ってユーザーを手動で作成することにしましょう。 6.1.3で説明したcreateを使いますが、後々実際のユーザーを作成す…

【49日目】【1日20分のRailsチュートリアル】【第6章】Userモデルへのセキュアなパスワードとパスワードの最小文字数を設定する

Ruby on Railsチュートリアル(第3版) 今日は「6.3.2 ユーザーがセキュアなパスワードを持っている」から。 6.3.2 ユーザーがセキュアなパスワードを持っている Userモデルにpassword_digest属性を追加し、Gemfileにbcryptを追加したことで、ようやくUserモデ…

【48日目】【1日20分のRailsチュートリアル】【第6章】セキュアなパスワードを追加する準備

Ruby on Railsチュートリアル(第3版) 今日は「6.3 セキュアなパスワードを追加する」から。 6.3 セキュアなパスワードを追加する セキュアパスワードという手法では、各ユーザーにパスワードとパスワードの確認を入力させ、それを (そのままではなく) ハッシ…

【47日目】【1日20分のRailsチュートリアル】【第6章】データベースにメールアドレスの一意性を設定する

Ruby on Railsチュートリアル(第3版) 今日は「6.2.5 一意性を検証する」のデータベースにも一意性の設定するところから。 6.2.5 一意性を検証する 実は、この問題はデータベースレベルでも一意性を強制するだけで解決します。 具体的にはデータベース上のema…

【46日目】【1日20分のRailsチュートリアル】【第6章】ユーザーのメールアドレスの一意性を検証する

Ruby on Railsチュートリアル(第3版) 今日は「6.2.5 一意性を検証する」から。 6.2.5 一意性を検証する メールアドレスの一意性を強制するために (ユーザー名として使うために)、validatesメソッドの:uniqueオプションを使います。 ふむふむ。 一意性のテス…