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

ぞえの技術めも

Ruby on Rails勉強中

【126日目】【1日20分のRailsチュートリアル】【第10章】メールプレビューのテストを作成する

Ruby on Railsチュートリアル(第3版) 今日は「10.1.2 AccountActivationsメイラーメソッド」のメールプレビューのテストを作成するところから。 10.1.2 AccountActivationsメイラーメソッド 最後に、このメールプレビューのテストも作成して、プレビューをダ…

【125日目】【1日20分のRailsチュートリアル】【第10章】アカウント有効化メールのプレビューを確認する

Ruby on Railsチュートリアル(第3版) 今日は「10.1.2 AccountActivationsメイラーメソッド」のUserメイラーのプレビューファイルを更新するところから。 10.1.2 AccountActivationsメイラーメソッド developmentサーバーを再起動してリスト10.14の設定を読み…

【124日目】【1日20分のRailsチュートリアル】【第10章】アカウント有効化メールのビューを作成する

Ruby on Railsチュートリアル(第3版) 今日は「10.1.2 AccountActivationsメイラーメソッド」のメールにアカウント有効化リンクを追加するところから。 10.1.2 AccountActivationsメイラーメソッド ここでは挨拶文にユーザー名を含め、カスタムの有効化リンク…

【123日目】【1日20分のRailsチュートリアル】【第10章】UserMailerを生成してテンプレートをカスタマイズする

Ruby on Railsチュートリアル(第3版) 今日は「10.1.2 AccountActivationsメイラーメソッド」から。 10.1.2 AccountActivationsメイラーメソッド メイラーの構成はコントローラのアクションとよく似ており、メールのテンプレートをビューと同じ要領で定義でき…

【122日目】【1日20分のRailsチュートリアル】【第10章】アカウントの有効化トークンやダイジェストを作成する処理を追加する

Ruby on Railsチュートリアル(第3版) 今日は「10.1.1 AccountActivationsリソース」のアカウントの有効化について考えるところから。 10.1.1 AccountActivationsリソース ユーザーが新しい登録を完了するためには必ずアカウントの有効化が必要になるのですか…

【121日目】【1日20分のRailsチュートリアル】【第10章】アカウント有効化のためにUserモデルに属性を追加する

Ruby on Railsチュートリアル(第3版) 今日は「10.1.1 AccountActivationsリソース」のresources行を追加するところから。 10.1.1 AccountActivationsリソース 有効化メールでは以下の形式のURLを使用します。 edit_account_activation_url(activation_token,…

【120日目】【1日20分のRailsチュートリアル】【第10章】AccountActivationsリソースを生成する

Ruby on Railsチュートリアル(第3版) 今日は「第10章 アカウント有効化とパスワード再設定」から。 今日から10章! 第10章 アカウント有効化とパスワード再設定 アカウントの有効化 (アクティベーション: 新規ユーザーのメールアドレスが有効であることを確…

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

Ruby on Railsチュートリアル(第3版) 今日は「9.6 演習」の4.から。 9.6 演習 4.リスト9.60のパーシャルを使用して、new.html.erbビューとedit.html.erbビューをリファクタリングし、コードの重複を取り除いてください。 このとき、リスト9.61のようにフォ…

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

Ruby on Railsチュートリアル(第3版) 今日は「9.6 演習」の3.から。 9.6 演習 3.Web経由でadmin属性を変更できないことを確認してください。 リスト9.59に示したように、PATCHリクエストを updateメソッドに直接発行するテストを作成してください。 テスト…

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

Ruby on Railsチュートリアル(第3版) 今日は「9.6 演習」の2.から。 9.6 演習 2.レイアウトにあるすべてのリンクに対して統合テストを書いてみましょう。 ログイン済みユーザーとそうでないユーザーのそれぞれに対して、正しい振る舞いを考えてください。 …

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

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

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

Ruby on Railsチュートリアル(第3版) 今日は「9.5 最後に」から。 9.5 最後に メールアドレスを使ってアカウントを有効化する機能と (すなわち本当に有効なメールアドレスか検証するプロセスと)、ユーザーがパスワードを忘れてしまったときのためのパスワー…

【114日目】【1日20分のRailsチュートリアル】【第9章】ユーザー削除のテストを追加する

Ruby on Railsチュートリアル(第3版) 今日は「9.4.3 ユーザー削除のテスト」から。 9.4.3 ユーザー削除のテスト ユーザー削除と同じくらい重要なことは、その振る舞いが期待されたかどうかを確かめる良いテストを書くことです。 そこで、まずはユーザー用fix…

【113日目】【1日20分のRailsチュートリアル】【第9章】destroyアクションを実装する

Ruby on Railsチュートリアル(第3版) 今日は「9.4.2 destroyアクション」から。 9.4.2 destroyアクション Usersリソースの最後の仕上げとして、destroyアクションへのリンクを追加しましょう。 まず各ユーザーにユーザー削除用のリンクを追加。 app/views/us…

【112日目】【1日20分のRailsチュートリアル】【第9章】Strong Parametersでadmin属性の変更をガードする

Ruby on Railsチュートリアル(第3版) 今日は「9.4.1 管理ユーザー」の「Strong Parameters、再び」から。 9.4.1 管理ユーザー Strong Parameters、再び 任意のWebリクエストの初期化ハッシュをオブジェクトに渡せるとなると、攻撃者は以下のようなPATCHリク…

【111日目】【1日20分のRailsチュートリアル】【第9章】管理ユーザーを識別するadmin属性を追加する

Ruby on Railsチュートリアル(第3版) 今日は「9.4 ユーザーを削除する」から。 9.4 ユーザーを削除する 削除を行うのに必要なdestroyアクションも実装します。しかしその前に、削除を実行できる権限を持つ管理 (admin) ユーザーのクラスを作成しましょう。 i…

【110日目】【1日20分のRailsチュートリアル】【第9章】パーシャルのリファクタリングを行う

Ruby on Railsチュートリアル(第3版) 今日は「9.3.5 パーシャルのリファクタリング」から。 9.3.5 パーシャルのリファクタリング 実はRailsにはコンパクトなビューを作成するための素晴らしいツールがいくつもあります。 この節ではそれらのツールを使用して…

【109日目】【1日20分のRailsチュートリアル】【第9章】ユーザーインデックスのテストを追加する

Ruby on Railsチュートリアル(第3版) 今日は「9.3.4 ユーザーインデックスのテスト」から。 9.3.4 ユーザーインデックスのテスト 今回のテストでは、ログイン、indexページにアクセス、最初のページにユーザーがいることを確認、ページネーションのリンクが…

【108日目】【1日20分のRailsチュートリアル】【第9章】indexページでページネーションを動作させる

Ruby on Railsチュートリアル(第3版) 今日は「9.3.3 ページネーション」から。 9.3.3 ページネーション これで、最初のユーザーにも仲間ができました。しかし今度は逆に、1つのページに大量のユーザーが表示されてしまっています。 (中略) これを解決する…

【107日目】【1日20分のRailsチュートリアル】【第9章】サンプルユーザーを一気に追加する

Ruby on Railsチュートリアル(第3版) 今日は「9.3.2 サンプルのユーザー」から。 9.3.2 サンプルのユーザー この節では、一人ぼっちのユーザーに仲間を加えてあげることにします。 (中略) せっかくなのでRubyとRakeを使用してユーザーを一気に作成しましょ…

【106日目】【1日20分のRailsチュートリアル】【第9章】すべてのユーザーを表示するビューを作成する

Ruby on Railsチュートリアル(第3版) 今日は「9.3.1 ユーザーインデックス」のindexビューを追加するところから。 9.3.1 ユーザーインデックス 今度はすべてのユーザーを表示するために、全ユーザーが格納された変数を作成し、順々に表示するindexビューを実…

【105日目】【1日20分のRailsチュートリアル】【第9章】すべてのユーザーを表示する

Ruby on Railsチュートリアル(第3版) 今日は「9.3 すべてのユーザーを表示する」から。 9.3 すべてのユーザーを表示する この節では、いよいよ最後から2番目のユーザーアクションであるindexアクションを追加しましょう。このアクションは、すべてのユーザー…

【104日目】【1日20分のRailsチュートリアル】【第9章】フレンドリーフォワーディング機能を実装する

Ruby on Railsチュートリアル(第3版) 今日は「9.2.3 フレンドリーフォワーディング」の実装するところから。 9.2.3 フレンドリーフォワーディング 失敗するテストが書けたので、ようやくフレンドリーフォワーディングを実装する準備ができました。 ユーザー…

【103日目】【1日20分のRailsチュートリアル】【第9章】ユーザーフレンドリーな機能のテストを追加する

Ruby on Railsチュートリアル(第3版) 今日は「9.2.2 正しいユーザーを要求する」のリファクタリングから。 9.2.2 正しいユーザーを要求する 最後に、リファクタリングではありますが、一般的な慣習に倣ってcurrent_user?という論理値を返すメソッドを実装し…

【102日目】【1日20分のRailsチュートリアル】【第9章】ユーザーが自分の情報だけを編集できるように実装を追加する

Ruby on Railsチュートリアル(第3版) 今日は「9.2.2 正しいユーザーを要求する」から。 9.2.2 正しいユーザーを要求する 当然のことですが、ログインを要求するだけでは十分ではありません。ユーザーが自分の情報だけを編集できるようにする必要があります。…

【101日目】【1日20分のRailsチュートリアル】【第9章】ユーザーにログインを要求する処理のテストを作成する

Ruby on Railsチュートリアル(第3版) 今日は「9.2.1 ユーザーにログインを要求する」のテストを修正するところから。 9.2.1 ユーザーにログインを要求する 原因は、editアクションやupdateアクションでログインを要求するようになったため、ログインしていな…

【100日目】【1日20分のRailsチュートリアル】【第9章】ユーザーにログインを要求する処理を追加

遂に100日目! Ruby on Railsチュートリアル(第3版) 今日は「9.2 認可」から。 9.2 認可 9.1のeditアクションとupdateアクションはすでに完全に動作していますが、セキュリティ上の大穴が1つ空いています。 どのユーザーでもあらゆるアクションにアクセスで…

【99日目】【1日20分のRailsチュートリアル】【第9章】テスト駆動開発でプロフィール編集処理を実装する

Ruby on Railsチュートリアル(第3版) 今日は「9.1.4 TDDで編集を成功させる」から。 9.1.4 TDDで編集を成功させる プロファイル画像の編集は、画像のアップロードをGravatarに任せてあるので、既に動作するようになっています。 Gravatarの方で画像の編集を…

【98日目】【1日20分のRailsチュートリアル】【第9章】ユーザー情報の編集に失敗したときの処理とテストを作成

Ruby on Railsチュートリアル(第3版) 今日は「9.1.2 編集の失敗」から。 9.1.2 編集の失敗 本項では、7.3のユーザー登録に失敗したときと似た方法で、編集に失敗した場合について扱っていきます。 まずUsersコントローラーにupdateアクションを追加する。 ap…

【97日目】【1日20分のRailsチュートリアル】【第9章】ユーザー編集ページを作成する

Ruby on Railsチュートリアル(第3版) 今日は「9.1.1 編集フォーム」のeditアクションを実装するところから。 9.1.1 編集フォーム Usersコントローラにeditアクションを追加して、それに対応するeditビューを実装する必要があります。 まずUsersコントローラ…

【96日目】【1日20分のRailsチュートリアル】【第9章】9章向けの作業ブランチ作る

Ruby on Railsチュートリアル(第3版) 今日は「第9章 ユーザーの更新・表示・削除」から。 第9章 ユーザーの更新・表示・削除 この章では、Usersリソース用のRESTアクション (表7.1) のうち、これまで未実装だったedit、update、index、destroyアクションを追…

【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を使用する一時セッションでユーザー…