メメメモモ

プログラミング備忘録、リモートワーク生活、筋トレ、etc

Ruby on Rails チュートリアル 第4版 メモ

railstutorial.jp

第1章

railstutorial.jp

チュートリアルでは、helloアプリ(1.3)、toyアプリ(第2章)、sampleアプリ(第3章から第14章まで)を作る。

Railsをインストールする

https://railstutorial.jp/chapters/beginning?version=5.1#sec-installing_rails

$ gem install rails -v 5.1.2

最初のアプリケーション

https://railstutorial.jp/chapters/beginning?version=5.1#sec-the_hello_application

$ cd
$ mkdir environment
$ cd environment
$ cd ~/environment
$ rails _5.1.2_ new hello_app

Bundler

https://railstutorial.jp/chapters/beginning?version=5.1#sec-bundler

Gemfileでgemのバージョンを指定できる。

bundle installを実行してgemをインストールする。

$ cd hello_app
$ bundle install

rails server

rails serverでRailsサーバを実行する。

$ cd ~/environment/hello_app/
$ rails server

演習 https://railstutorial.jp/chapters/beginning?version=5.1#sec-exercises_rails_server

Model-View-Controller (MVC)

https://railstutorial.jp/chapters/beginning?version=5.1#sec-mvc

MVCの解説。

Hello, world!

https://railstutorial.jp/chapters/beginning?version=5.1#sec-hello_world

演習 https://railstutorial.jp/chapters/beginning?version=5.1#sec-exercises_hello_world

Gitによるバージョン管理

https://railstutorial.jp/chapters/beginning?version=5.1#sec-version_control

Bitbucketにあげる。

デプロイする

Herokuにデプロイする。

Herokuコマンドのインストール。

$ brew install heroku/brew/heroku

演習 https://railstutorial.jp/chapters/beginning?version=5.1#sec-exercises_heroku_step_two

Herokuコマンド

https://railstutorial.jp/chapters/beginning?version=5.1#sec-exercises_heroku_commands

演習 https://railstutorial.jp/chapters/beginning?version=5.1#sec-exercises_heroku_commands

第2章

railstutorial.jp

Toyアプリの設定
https://railstutorial.jp/chapters/toy_app?version=5.1#sec-planning_the_application

UsersのScaffold生成
https://railstutorial.jp/chapters/toy_app?version=5.1#sec-demo_users_resource

MicropostsのScaffold生成
https://railstutorial.jp/chapters/toy_app?version=5.1#sec-a_micropost_microtour

バリデーションの追加
https://railstutorial.jp/chapters/toy_app?version=5.1#sec-putting_the_micro_in_microposts

リレーションの設定
https://railstutorial.jp/chapters/toy_app?version=5.1#sec-demo_user_has_many_microposts

第3章

railstutorial.jp

セットアップ
https://railstutorial.jp/chapters/static_pages?version=5.1#sec-sample_app_setup

Controllerの生成
https://railstutorial.jp/chapters/static_pages?version=5.1#sec-generated_static_pages

テスト
https://railstutorial.jp/chapters/static_pages?version=5.1#sec-red
https://railstutorial.jp/chapters/static_pages?version=5.1#sec-testing_titles

レイアウト
https://railstutorial.jp/chapters/static_pages?version=5.1#sec-layouts_and_embedded_ruby

minitest reporters
https://railstutorial.jp/chapters/static_pages?version=5.1#sec-minitest_reporters

Guardによるテストの自動化
https://railstutorial.jp/chapters/static_pages?version=5.1#sec-guard

第4章

railstutorial.jp

カスタムヘルパー
https://railstutorial.jp/chapters/rails_flavored_ruby?version=5.1#sec-custom_helpers

第5章

railstutorial.jp

ナビゲーション
https://railstutorial.jp/chapters/filling_in_the_layout?version=5.1#sec-adding_to_the_layout

Bootstrap
https://railstutorial.jp/chapters/filling_in_the_layout?version=5.1#sec-custom_css

パーシャル(partial)
https://railstutorial.jp/chapters/filling_in_the_layout?version=5.1#sec-partials

アセットパイプラインのディレクト
https://railstutorial.jp/chapters/filling_in_the_layout?version=5.1#uid584

Sassの構文
https://railstutorial.jp/chapters/filling_in_the_layout?version=5.1#sec-sass

リンクの記述
https://railstutorial.jp/chapters/filling_in_the_layout?version=5.1#sec-layout_links

ルートの設定
https://railstutorial.jp/chapters/filling_in_the_layout?version=5.1#sec-rails_routes

インテグレーションテスト(リンクのテスト)
https://railstutorial.jp/chapters/filling_in_the_layout?version=5.1#sec-layout_link_tests

テストでもApplicationヘルパーを使えるようにする
https://railstutorial.jp/chapters/filling_in_the_layout?version=5.1#sec-exercises_layout_link_tests

ユーザー登録
https://railstutorial.jp/chapters/filling_in_the_layout?version=5.1#sec-user_signup

第6章

railstutorial.jp

モデルを作成するコマンド
https://railstutorial.jp/chapters/modeling_users?version=5.1#code-generate_user_model

サンドボックスモードでUserを作成する
https://railstutorial.jp/chapters/modeling_users?version=5.1#sec-creating_user_objects

Modelのテスト
https://railstutorial.jp/chapters/modeling_users?version=5.1#code-valid_user_test

存在性を検証する
https://railstutorial.jp/chapters/modeling_users?version=5.1#sec-presence_validation

長さを検証する
https://railstutorial.jp/chapters/modeling_users?version=5.1#sec-length_validation

フォーマットを検証する
https://railstutorial.jp/chapters/modeling_users?version=5.1#sec-format_validation

一意性を検証する
https://railstutorial.jp/chapters/modeling_users?version=5.1#sec-uniqueness_validation

一意性のマイグレーション
https://railstutorial.jp/chapters/modeling_users?version=5.1#code-email_uniqueness_index

email属性を小文字に変換してメールアドレスの一意性を保証する
https://railstutorial.jp/chapters/modeling_users?version=5.1#code-email_downcase

セキュアなパスワードを追加する
https://railstutorial.jp/chapters/modeling_users?version=5.1#sec-a_hashed_password

ユーザーの作成と認証
https://railstutorial.jp/chapters/modeling_users?version=5.1#sec-creating_and_authenticating_a_user

第7章

railstutorial.jp

デバッグ用の表示を設定
https://railstutorial.jp/chapters/sign_up?version=5.1#sec-rails_environments

Usersリソースをroutesファイルに追加する
https://railstutorial.jp/chapters/sign_up?version=5.1#code-users_resource

byebugによるデバッガメソッド
https://railstutorial.jp/chapters/sign_up?version=5.1#sec-debugger

Gravatarの導入
https://railstutorial.jp/chapters/sign_up?version=5.1#sec-a_gravatar_image

form_forを使用する
https://railstutorial.jp/chapters/sign_up?version=5.1#sec-using_form_for

ユーザー登録
https://railstutorial.jp/chapters/sign_up?version=5.1#sec-unsuccessful_signups

Strong Parameters
https://railstutorial.jp/chapters/sign_up?version=5.1#sec-strong_parameters

エラーメッセージ表示
https://railstutorial.jp/chapters/sign_up?version=5.1#sec-signup_error_messages

失敗時のテスト
https://railstutorial.jp/chapters/sign_up?version=5.1#sec-a_test_for_invalid_submission

ユーザー登録成功
https://railstutorial.jp/chapters/sign_up?version=5.1#sec-successful_signups

flash
https://railstutorial.jp/chapters/sign_up?version=5.1#sec-the_flash

データベースのリセット
https://railstutorial.jp/chapters/sign_up?version=5.1#sec-the_first_signup

成功時のテスト
https://railstutorial.jp/chapters/sign_up?version=5.1#sec-a_test_for_valid_submission

本番環境でのSSL
https://railstutorial.jp/chapters/sign_up?version=5.1#sec-ssl_in_production

本番環境用のWebサーバー
https://railstutorial.jp/chapters/sign_up?version=5.1#sec-production_webserver

第8章

railstutorial.jp

Sessionsコントローラを作成
https://railstutorial.jp/chapters/basic_login?version=5.1#sec-sessions_controller

ログインフォーム作成
https://railstutorial.jp/chapters/basic_login?version=5.1#code-login_form

ユーザーの検索と検証
https://railstutorial.jp/chapters/basic_login?version=5.1#sec-finding_and_authenticating_a_user

ログイン
https://railstutorial.jp/chapters/basic_login?version=5.1#sec-logging_in

レイアウトの変更をテストする、has_secure_password準拠のdigestメソッドを定義する
https://railstutorial.jp/chapters/basic_login?version=5.1#sec-testing_layout_changes

第9章

railstutorial.jp

記憶トークンと暗号化
https://railstutorial.jp/chapters/advanced_login?version=5.1#sec-remember_token

  • 記憶トークン(remember token)を生成
  • cookiesメソッドによる永続cookiesの作成
  • 記憶ダイジェスト(remember digest)によるトークン認証

ログイン状態の保持
https://railstutorial.jp/chapters/advanced_login?version=5.1#sec-login_with_remembering

個別のcookiesは1つの「value(値)」と、オプションの「expires(有効期限)」からできている。

ログアウト
https://railstutorial.jp/chapters/advanced_login?version=5.1#sec-forgetting_users

インテグレーションテストのヘルパー
https://railstutorial.jp/chapters/advanced_login?version=5.1#sec-testing_the_remember_me_box

永続ログインをテストする
https://railstutorial.jp/chapters/advanced_login?version=5.1#sec-testing_the_remember_branch

Herokuでメンテナンスモード
https://railstutorial.jp/chapters/advanced_login?version=5.1#sec-advanced_login_conclusion

第10章

railstutorial.jp

編集フォーム
https://railstutorial.jp/chapters/updating_and_deleting_users?version=5.1#sec-edit_form

新規と編集のフォームの共通化
https://railstutorial.jp/chapters/updating_and_deleting_users?version=5.1#sec-exercises_edit_form

編集の失敗
Ruby on Rails チュートリアル:実例を使って Rails を学ぼう

TDD
https://railstutorial.jp/chapters/updating_and_deleting_users?version=5.1#sec-successful_edits

_form.html.erbで、signupのurlの設定が外れるので、テストが失敗していた。演習でやった部分なので、チュートリアルでは言及されていないっぽい。

ログインを要求する
https://railstutorial.jp/chapters/updating_and_deleting_users?version=5.1#sec-requiring_logged_in_users

正しいユーザーを要求する
https://railstutorial.jp/chapters/updating_and_deleting_users?version=5.1#sec-requiring_the_right_user

フレンドリーフォワーディング
https://railstutorial.jp/chapters/updating_and_deleting_users?version=5.1#sec-friendly_forwarding

未ログイン状態で、ログインが必要なページにアクセスしたら、ログインページにリダイレクトする。その際にURLを保存しておき、ログイン後にリダイレクトするようにする。

fakerを使ってサンプルユーザーを作成
Ruby on Rails チュートリアル:実例を使って Rails を学ぼう

ページネーション
https://railstutorial.jp/chapters/updating_and_deleting_users?version=5.1#sec-pagination

ユーザー一覧のテスト
https://railstutorial.jp/chapters/updating_and_deleting_users?version=5.1#sec-users_index_test

管理ユーザー
https://railstutorial.jp/chapters/updating_and_deleting_users?version=5.1#sec-administrative_users

ユーザー削除テスト
https://railstutorial.jp/chapters/updating_and_deleting_users?version=5.1#sec-user_destroy_tests

第11章

railstutorial.jp

AccountActivationsリソース
https://railstutorial.jp/chapters/account_activation?version=5.1#sec-account_activations_resource

送信メールテンプレート
https://railstutorial.jp/chapters/account_activation?version=5.1#sec-account_activation_emails

Railsのメールプレビュー機能
https://railstutorial.jp/chapters/account_activation?version=5.1#sec-email_previews

メール送信テスト
https://railstutorial.jp/chapters/account_activation?version=5.1#sec-email_tests

メタプログラミングでメソッド名で変数を使って呼び出す
https://railstutorial.jp/chapters/account_activation?version=5.1#sec-generalizing_the_authenticated_method

有効化のテスト
https://railstutorial.jp/chapters/account_activation?version=5.1#sec-activation_test_and_refactoring

Herokuでメール送信
https://railstutorial.jp/chapters/account_activation?version=5.1#sec-activation_email_in_production

PostgreSQLでdatetime型が使えないようなので、Herokuでのmigrateでエラーが起こる。ひとまずtimestampに変更したら、エラーを回避できた。

第12章

railstutorial.jp

パスワード再設定テスト
https://railstutorial.jp/chapters/password_reset?version=5.1#sec-password_reset_test

期間切れのテスト
https://railstutorial.jp/chapters/password_reset?version=5.1#code-password_reset_expire_test

第13章

railstutorial.jp

has_manyのmodelを生成
https://railstutorial.jp/chapters/user_microposts?version=5.1#code-generate_micropost_model

belongs_to/has_manyを設定すると使える機能
https://railstutorial.jp/chapters/user_microposts?version=5.1#table-association_methods

マイクロポストを時間順に取得できるようにする
https://railstutorial.jp/chapters/user_microposts?version=5.1#sec-ordering_and_dependency

ユーザーを削除したときにマイクロソフトも削除されるようにする
https://railstutorial.jp/chapters/user_microposts?version=5.1#sec-dependent_destroy

マイクロポストを表示する
https://railstutorial.jp/chapters/user_microposts?version=5.1#sec-showing_microposts

マイクロポストのサンプル
https://railstutorial.jp/chapters/user_microposts?version=5.1#sec-sample_microposts

マイクロポストのテスト
https://railstutorial.jp/chapters/user_microposts?version=5.1#sec-profile_micropost_tests

マイクロポストを作成する
https://railstutorial.jp/chapters/user_microposts?version=5.1#sec-creating_microposts

フィードを作成
https://railstutorial.jp/chapters/user_microposts?version=5.1#sec-a_proto_feed

redirect_back(fallback_location: root_url)
https://railstutorial.jp/chapters/user_microposts?version=5.1#sec-exercises_destroying_microposts

フィード画面のマイクロソフトをテスト
https://railstutorial.jp/chapters/user_microposts?version=5.1#sec-micropost_tests

画像投稿
https://railstutorial.jp/chapters/user_microposts?version=5.1#sec-micropost_images

画像の検証
https://railstutorial.jp/chapters/user_microposts?version=5.1#sec-image_validation

画像のリサイズ
https://railstutorial.jp/chapters/user_microposts?version=5.1#sec-image_resizing

テスト時のみリサイズ機能をオフにする設定
https://railstutorial.jp/chapters/user_microposts?version=5.1#code-skip_resize_initializer

S3に画像をアップロード(本番環境)
https://railstutorial.jp/chapters/user_microposts?version=5.1#sec-image_upload_in_production

本番デプロイ時に LoadError: cannot load such file -- fog というエラーが出た。Gemfileに

gem 'fog'

を追加したら直った。

第14章

railstutorial.jp

Ajax
https://railstutorial.jp/chapters/following_users?version=5.1#sec-a_working_follow_button_with_ajax

ステータスフィード
https://railstutorial.jp/chapters/following_users?version=5.1#sec-the_status_feed