ポケットリファレンスシリーズRuby on Rails 7 ポケットリファレンス

[表紙]Ruby on Rails 7 ポケットリファレンス

紙版発売
電子版発売

四六判/624ページ

定価3,520円(本体3,200円+税10%)

ISBN 978-4-297-13062-6

電子版

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

ロングセラーシリーズ・ポケットリファレンスのRuby on Railsが10年ぶりの改訂。

  • 「逆引き形式で目的からすぐ探せる」
  • 「サンプルコードを見ながら具体的な実装のイメージがつかめる」

という特徴で,困ったときにすぐに役立ちます。

Railsの基本からデプロイまでフォローする充実した内容はそのままに,Action Mailbox/Action Text/Action Cable/Active Storage/Active Jobなど重要コンポーネントを新規書き下ろしで大幅に増強。累計100万部以上の技術書を送り出してきた山田祥寛氏の監修による,現場で役立つ信頼の1冊。

こんな方におすすめ

  • Rails 7でできることを目的から知りたい/てっとり早く俯瞰したいエンジニア
著者プロフィール

山内直(やまうちなお)

WINGS プロジェクト ライター。電気通信大学在学中から執筆活動を開始,秀和システムでの開発者・編集者業務を経て,現在は著者・編集者・開発者・講師として幅広く活動中。

著者は『Bootstrap 5 フロントエンド開発の教科書』(技術評論社)など。

監修者プロフィール

山田祥寛(やまだよしひろ)

千葉県鎌ヶ谷市在住のフリーライター。Microsoft MVPfor ASP/ASP.NET。執筆コミュニティ「WINGS プロジェクト」代表。書籍執筆を中心に,雑誌/ サイト記事,取材,講演までを手がける。

『JavaScript 本格入門』(技術評論社)ほか著書多数

目次

  • はじめに
  • 本書の使い方

Chapter 1 Ruby on Railsの基本

  • Ruby on Railsとは?
  • Railsを利用するための環境設定

基本コマンド

  • Railsアプリケーションを新規作成する―rails newコマンド
  • 必要なgemファイルを管理する―gemメソッド
  • 必要なgemをインストールする―bundle installコマンド
  • HTTPサーバを起動する―rails serverコマンド
  • モデル/テンプレート/コントローラをまとめて作成する―rails generate scaffoldコマンド
  • 自動生成されたファイルを削除する―rails destroyコマンド
  • Rails環境で動作するバッチファイルを作成する―rails runnerコマンド

アプリケーション設定

  • アプリケーションの設定情報を定義する―configメソッド
  • アプリケーション変数を定義する―configメソッド

その他のコマンド

  • Railsで利用できるRakeタスクを確認する―rails -Tコマンド
  • 利用しているライブラリのバージョンを確認する―rails aboutコマンド
  • 開発中の懸案事項をメモする―rails notesコマンド
  • Railsアプリケーションをバージョンアップする―rails app:updateコマンド
  • 一時ファイル領域を作成・消去する―rails tmp:xxxxコマンド
  • アプリケーションにテンプレートを適用する―rails app:templateコマンド
  • オリジナルのRakeタスクを作成する―taskメソッド

Chapter 2 コントローラ開発

  • 概要

コントローラの基本

  • コントローラクラスを作成する―rails generate controllerコマンド
  • アクションメソッドを記述する―アクションメソッド
  • コントローラ/アクション名を取得する―controller_xxxxx/action_nameメソッド

リクエスト情報

  • ポストデータ/クエリ情報/ルートパラメータを取得する―paramsメソッド
  • リクエストヘッダ/サーバ環境変数を取得する―headersメソッド

レスポンス情報

  • テンプレートファイルを呼び出す―renderメソッド
  • 文字列を出力する―renderメソッド(:plain)
  • HTMLを出力する―renderメソッド(:html)
  • アクションにインラインのテンプレートを記述する―renderメソッド(:inline)
  • テンプレートに適用するレイアウトを変更する―render(:layout)/layoutメソッド
  • XML形式のレスポンスを生成する―renderメソッド(:xml)
  • JSON形式のレスポンスを生成する―render(:json)メソッド
  • XML形式のデータをJSON形式に変換する―from_xmlメソッド
  • 空のコンテンツを出力する―headメソッド
  • テンプレートでの処理結果を文字列として取得する―render_to_stringメソッド
  • 他のページにリダイレクトする―redirect_to/redirect_backメソッド
  • 指定されたファイルを出力する―send_fileメソッド
  • クライアントにバイナリデータを送信する―send_dataメソッド
  • 拡張子に応じて応答フォーマットを切り替える―respond_toメソッド
  • respond_toメソッドで利用できる拡張子を定義する―registerメソッド
  • 応答ヘッダを取得/設定する―headersメソッド
  • Cache-Controlヘッダを操作する―expires_in/expires_nowメソッド
  • BuilderテンプレートでXML文書を生成する―xmlオブジェクト
  • Atomフィードを生成する―atom_feedメソッド

状態管理

  • クッキーを取得/設定する―cookiesメソッド
  • クッキーを削除する―deleteメソッド
  • 永続化クッキー/署名付きクッキーを発行する―permanent/signedメソッド
  • セッション情報を読み書きする―sessionメソッド
  • セッションを破棄する―reset_session/sessionメソッド
  • セッションの設定を変更する―session_store/sessionパラメータ
  • セッション格納のデータベースを準備する―rails generate active_record:session_migration/rails db:sessions:trimコマンド
  • リダイレクト前後で一時的にデータを維持する(1)―redirect_toメソッド(:alert/:notice/:flash)
  • リダイレクト前後で一時的にデータを維持する(2)―flashメソッド
  • 現在のアクションでのみ有効なフラッシュを定義する―nowメソッド
  • フラッシュを次のリクエストに持ち越す―keepメソッド
  • フラッシュを破棄する―discardメソッド

ログ管理

  • 標準ログを出力する―unknown/fatal/error/warn/info/debugメソッド
  • ログの出力を重要度に応じて絞り込む―log_levelパラメータ
  • ログファイルをクリアする―rails log:clearコマンド
  • 特定の情報をログから除外する―filter_parameters/filter_redirectパラメータ

フィルタ

  • アクションの直前/直後に処理を実行する―before_action/after_actionメソッド
  • アクションの前後で処理を実行する―around_actionメソッド
  • フィルタを簡単に定義する―before_action/around_action/after_actionメソッド
  • 複数のコントローラでフィルタを共有する―before/after/aroundメソッド
  • 親コントローラから継承したフィルタを除外する―skip_xxxxx_actionメソッド
  • フィルタの実行順序を変更する―prepend_xxxxx_actionメソッド
  • 基本認証を実装する―authenticate_or_request_with_http_basicメソッド
  • 基本認証を簡単に実装する―http_basic_authenticate_withメソッド
  • ダイジェスト認証を実装する―authenticate_or_request_with_http_digestメソッド

Applicationコントローラ

  • すべてのコントローラ共通の処理を定義する―ApplicationControllerクラス
  • クロスサイトリクエストフォージェリ対策を行う―protect_from_forgery/csrf_meta_tagsメソッド
  • アプリケーション共通の例外処理をまとめる―rescue_fromメソッド
  • コントローラクラスでビューヘルパーを宣言する―helper_methodメソッド
  • コントローラに対応するヘルパーモジュールだけを読み込む―action_controller.include_all_helpersパラメータ/clear_helpersメソッド
  • url_forメソッドに渡すデフォルトパラメータを設定する―default_url_optionsメソッド
  • SSL通信を制御する―force_sslパラメータ/ssl_optionsパラメータ

Chapter 3 モデル開発

  • 概要

モデルの基本

  • データベースへの接続設定を定義する―database.yml
  • データベースを作成/削除する―rails db:create/rails db:create:all/rails db:drop/rails db:drop:allコマンド
  • データベースクライアントを起動する―rails dbconsoleコマンド
  • モデルクラスを自動生成する―rails generate modelコマンド
  • モデルの動作をコンソールで対話的に確認する―rails consoleコマンド

マイグレーション

  • マイグレーションとは?
  • マイグレーションファイルでデータベースを操作する―change/up/downメソッド
  • マイグレーションファイルを実行する―rails db:migrateコマンド
  • マイグレーションの状態/バージョンを確認する―rails db:migrate:status/rails db:versionコマンド
  • スキーマファイルでデータベースを作成する―rails db:schema:load/rails db:resetコマンド
  • 現在のデータベースからスキーマファイルを生成する―rails db:schema:dumpコマンド
  • データベースに初期データを投入する―rails db:seed/rails db:setupコマンド
  • データベースにテストデータを投入する―rails db:fixtures:loadコマンド
  • マイグレーションファイルを単体で作成する―rails generate migrationコマンド
  • テーブルを作成する―create_tableメソッド
  • テーブルに特殊な列を追加する―timestamps/references/belongs_toメソッド
  • 既存テーブルを破棄する―drop_tableメソッド
  • マイグレーションファイルで任意のSQL命令を実行する―executeメソッド
  • 既存テーブルに列やインデックスを追加する―add_xxxxxメソッド
  • 既存の列定義/インデックスを削除する―remove_xxxxxメソッド
  • 既存の列定義を変更する―change_xxxxxメソッド
  • 既存列/インデックス/テーブルの名前を変更する―rename_xxxxxメソッド
  • 列/インデックスが存在するかを判定する―xxxxx_exists?メソッド
  • テーブル定義を変更する―change_tableメソッド

データの取得

  • テーブルからすべてのレコードを取得する―allメソッド
  • 主キー値でデータを検索する―findメソッド
  • 任意の列でデータを検索する―find_by_xxxxxメソッド
  • データを検索し初期化するか作成する―find_or_initialize_by/find_or_create_byメソッド
  • テーブルの先頭/末尾のレコードを取得する―first/lastメソッド

データの取得(クエリメソッド)

  • クエリメソッドとは?
  • 検索条件をハッシュで設定する―whereメソッド
  • 検索条件を文字列で設定する―whereメソッド
  • データを昇順/降順に並べ替える―order/reorderメソッド
  • m~n件のレコードだけを取得する―limit/offsetメソッド
  • 取得列を指定する―selectメソッド
  • 特定のキーでデータを集計する―groupメソッド
  • 集計結果をもとにデータを絞り込む―havingメソッド
  • モデルに適用した条件式を除外する―exceptメソッド

その他の取得系メソッド

  • 特定条件に合致するレコードの件数や平均値,合計値などを求める―集計メソッド
  • モデルオブジェクトをリロードする―reloadメソッド
  • SQL命令を直接指定する―find_by_sqlメソッド
  • データが1件でも存在するかを確認する―exists?メソッド
  • レコードのフィールド値を取得する―attributesメソッド
  • テーブルのすべての列名を取得する―attribute_namesメソッド
  • よく利用する条件式/ソート式を準備する―scopeメソッド
  • 名前付きスコープをパラメータ化する―scopeメソッド
  • デフォルトのスコープを定義する―default_scopeメソッド
  • モデルに課せられた条件式やソート式を無効化する―unscopedメソッド

データの登録/更新/削除

  • モデルオブジェクトを新規に作成する―newメソッド
  • モデルオブジェクトをデータベースに保存する―save/save!メソッド
  • モデルオブジェクトの作成から保存までを一気に行う―create/create!メソッド
  • 特定のフィールドを更新する―update_attributeメソッド
  • 既存のモデルオブジェクトを変更する―attributes=/assign_attributesメソッド
  • 複数のモデルオブジェクトをまとめて更新する―updateメソッド
  • 複数のモデルオブジェクトを効率的に更新する―update_allメソッド
  • 既存のレコードを削除する―destroy/deleteメソッド
  • 既存のレコードをまとめて削除する―destroy_all/delete_allメソッド
  • レコードの状態をチェックする―new_record?/persisted?/changed?/destroyed?メソッド
  • モデルオブジェクトへの変更を監視する―changed/changed_attributes/changes/previous_changesメソッド
  • 指定列の値をインクリメント/デクリメントする―increment/decrementメソッド
  • 指定列のtrue/false値を反転させる―toggleメソッド
  • レコードのupdated_at/on列を指定時刻で更新する―touchメソッド
  • トランザクション処理を実装する―transactionメソッド
  • オプティミスティック同時実行制御を実装する―StaleObjectErrorクラス
  • データベースの行ロック機能を利用する―lock/lock!メソッド
  • データベースに対してSQL命令を直接発行する―connection/executeメソッド
  • テーブルに存在しないプロパティをデータベースに保存する―セッターメソッド

アソシエーション

  • アソシエーションとは?
  • 参照元テーブルから被参照テーブルにアクセスする―belongs_toメソッド
  • 1:nの関連を宣言する―has_manyメソッド
  • 1:1の関連を宣言する―has_oneメソッド
  • m:nの関連を宣言する(中間テーブル)―has_and_belongs_to_manyメソッド
  • より複雑なm:nの関連を宣言する―has_manyメソッド(:through)
  • アソシエーションの挙動をカスタマイズする―belongs_to/has_one/has_many/has_and_belongs_to_manyメソッド
  • 関連モデルの件数を親モデル側でキャッシュする―belongs_toメソッド(:counter_cache)
  • 1つのモデルを複数の親モデルに関連付ける(ポリモーフィック関連)―belongs_toメソッド(:polymorphic)/has_manyメソッド(:as)
  • 関連するモデルを取得する―association/collectionメソッド
  • 関連するモデルを割り当てる―association=/collection=/collection_singular_ids=/collection<<メソッド
  • 関連するモデルを新規に作成する―build_association/create_association/build/createメソッド
  • 関連するモデルを削除する―delete/clearメソッド
  • 関連するモデルのid値を取得する―collection_singular_idsメソッド
  • 関連するモデルの数を取得する―sizeメソッド
  • 関連するモデルが存在するかをチェックする―empty?/exists?メソッド
  • 関連するモデルと結合する―joinsメソッド
  • 関連するモデルをまとめて読み込む―includesメソッド

検証機能

  • 標準の検証機能を利用する―validatesメソッド
  • 入力要素が空の場合に検証をスキップする―validatesメソッド(:allow_nil/:allow_blank)
  • 検証エラーメッセージをカスタマイズする―validatesメソッド(:message)
  • 検証を新規登録/更新時に限定する―validatesメソッド(:on)
  • 特定の条件に合致した/しない場合にのみ検証を実施する―validatesメソッド(:if/:unless)
  • 検証エラーメッセージを取得する―errorsメソッド
  • エラー発生元の表示スタイルを変更する―action_view.field_error_procパラメータ
  • モデル固有の検証ルールを定義する―validateメソッド
  • 複数のプロパティに共通するモデル独自の検証ルールを定義する―validates_eachメソッド
  • 汎用的な検証ルールを定義する―validate_eachメソッド
  • 検証パラメータにアクセスする―optionsメソッド
  • データベースに関連付かないモデルを定義する―ActiveModel::Conversion/ActiveModel::Validations/ActiveModel::Namingモジュール

コールバック

  • モデルの新規登録/更新/削除時に処理を呼び出す―before_xxxxx/after_xxxxxメソッド
  • モデルオブジェクトの検索/生成時に処理を呼び出す―after_find/after_initializeメソッド
  • コールバックメソッドを簡単に宣言する―before_xxxxx/after_xxxxxメソッド
  • コールバックを複数のモデルで共有する―コールバッククラス

Chapter 4 ビュー開発

  • 概要

ERBの基本

  • テンプレートにRubyスクリプトを埋め込む―<%…%>/<%=…%>/<%==…%>
  • テンプレート変数を引き渡す―@…
  • テンプレートファイルでメモ情報を記録する―コメント構文

レイアウト

  • レイアウトとは?
  • アプリケーション共通のレイアウトを準備する―yieldメソッド
  • レイアウトに複数のコンテンツ領域を埋め込む―content_forメソッド
  • レイアウトを入れ子にする―content_for?メソッド

部分テンプレート

  • 部分テンプレートとは?
  • 部分テンプレートを呼び出す―renderメソッド
  • 部分テンプレートにモデルを簡単に引き渡す―renderメソッド(省略構文)
  • 配列に対して順に部分テンプレートを適用する―renderメソッド(:collection)
  • 配列に対して順に部分テンプレートを適用する(簡易版)―renderメソッド(省略構文)
  • 配列の内容を区切りテンプレート付きで出力する―renderメソッド(:spacer_template)

ビューヘルパー(フォーム)

  • 汎用的なフォームを生成する―form_withメソッド
  • モデルと連携したフォームを生成する―form_withメソッド
  • 入力要素を生成する―xxxxx_field/text_areaメソッド
  • ラジオボタン/チェックボックスを生成する―radio_button/check_boxメソッド
  • コレクションからラジオボタン/チェックボックスを生成する―collection_check_boxes/collection_radio_buttonsメソッド
  • 選択ボックス/リストボックスを生成する―selectメソッド
  • オブジェクト配列から選択ボックスを生成する―collection_selectメソッド
  • 選択ボックスのオプションをグループ化する―grouped_collection_selectメソッド
  • 日付/時刻入力用の選択ボックスを生成する―xxxxx_selectメソッド
  • ラベルテキストを生成する―labelメソッド
  • ボタン/サブミットボタンを生成する―submitメソッド
  • サブフォームを定義する―fields_forメソッド
  • 入力項目をグループ化する―field_set_tagメソッド
  • 一覧形式の入力フォームを生成する―xxxxx_fieldメソッド(:index)

ビューヘルパー(リンク)

  • ルート定義をもとにURLを生成する―url_forメソッド
  • ハイパーリンクを生成する―link_toメソッド
  • 条件に合致した/しない場合のみリンクを生成する―link_to_if/link_to_unlessメソッド
  • リンク先が現在のページであればハイパーリンクを無効にする―link_to_unless_currentメソッド
  • メールアドレスへのリンクを生成する―mail_toメソッド

ビューヘルパー(外部リソース)

  • イメージ画像を表示する―image_tagメソッド
  • ブラウザ上で音声/動画を再生する―audio_tag/video_tagメソッド
  • サイトのFaviconを設定する―favicon_link_tagメソッド
  • ブラウザにフィードの存在を通知する―auto_discovery_link_tagメソッド
  • 外部リソースのパスを取得する―path_to_xxxxxメソッド
  • 外部リソースのパスを取得する―url_to_xxxxメソッド

ビューヘルパー(データ加工)

  • 改行文字を<p>/<br>タグで置き換える―simple_formatメソッド
  • 文字列を指定フォーマットで整形する―sprintfメソッド
  • 文字列を指定の桁数で切り捨てる―truncateメソッド
  • 文字列から指定された単語の前後を抜き出す―excerptメソッド
  • キーワードをハイライト表示する―highlightメソッド
  • テーブルやリストのスタイルをn行おきに変更する―cycle/reset_cycleメソッド
  • サイクルの現在値を取得する―current_cycleメソッド
  • 数値データを加工する―number_xxxxxメソッド
  • 日付/時刻データを加工する―strftimeメソッド

ビューヘルパー(出力/エスケープ)

  • <%…%>の中で文字列を出力する―concatメソッド
  • 文字列をHTMLエスケープせずに出力する―rawメソッド
  • URLエンコードを行う―url_encodeメソッド
  • 文字列から特定のタグ/属性を除去する―sanitizeメソッド

ビューヘルパー(国際化対応)

  • 国際化対応とは?
  • 辞書ファイルを作成する―辞書ファイル
  • ビューヘルパー/エラーメッセージなどを日本語化する―辞書ファイル
  • アプリケーションで使用するロケールを設定する―i18n.default_localeパラメータ
  • ロケール情報を動的に設定する―I18n.locale=メソッド
  • 辞書ファイルを参照する―tメソッド
  • ロケール設定に応じて日付/時刻を整形する―lメソッド

ビューヘルパー(その他)&自作

  • 任意のタグを生成する―tagメソッド
  • オブジェクトやハッシュなどのデータを可読形式に整形する―debugメソッド
  • テンプレートの処理結果を変数にセットする―captureメソッド
  • ビューヘルパーを自作する―ApplicationHelperモジュール
  • 任意の属性を受け取るビューヘルパーを定義する―merge!メソッド
  • 本体を持つビューヘルパーを定義する―block_given?メソッド

Chapter 5 ルーティング

  • 概要

基本コマンド

  • 現在のルート定義を確認する―rails routesコマンド

RESTfulインターフェイス

  • RESTfulインターフェイスを定義する―resourcesメソッド
  • 単一リソースに対するルートを定義する―resourceメソッド
  • 階層関係にあるリソースをルート定義する―resources/resourceメソッド
  • ルートパラメータに制約条件を付与する―:constraintsオプション
  • ルートパラメータに複雑な制約条件を設定する―matches?メソッド
  • RESTfulインターフェイスに自前のルートを追加する(1)―collection/memberブロック
  • RESTfulインターフェイスに自前のルートを追加する(2)―:onオプション
  • RESTfulインターフェイスの標準アクションを無効にする―:only/:exceptオプション
  • new/editアクションに対応するURLを変更する―:path_namesオプション
  • モジュール配下のコントローラをマッピングする(1)―namespaceブロック
  • モジュール配下のコントローラをマッピングする(2)―scope(:module)ブロック
  • URLに特定の接頭辞を付与する―scopeブロック
  • マッピングすべきコントローラを変更する―:controllerオプション
  • 自動生成するUrlヘルパーの名前を変更する―:asオプション

非RESTfulインターフェイス

  • リソースに関係ないルートを定義する―matchメソッド
  • 非RESTfulインターフェイスでルートパラメータに制約条件を付与する―:constraintsオプション
  • ルートパラメータのデフォルト値を設定する―:defaultsオプション
  • ルート定義をリダイレクトする―redirectメソッド
  • 非RESTfulインターフェイスで自動生成するUrlヘルパーの名前を変更する―asオプション
  • トップページへのルートを定義する―rootメソッド
  • カスタムURLヘルパーを定義する―directメソッド

Chapter 6 テスト

  • 概要

基本コマンド

  • テストデータベースを作成する―rails db:test:xxxxxコマンド
  • すべてのテストを実行する―rails test:allコマンド
  • テストの順番を変更する―active_support.test_orderパラメータ
  • Parallelテストを指定する―parallelizeメソッド
  • Parallelテストの前処理と後処理を行う―parallelize_setup/parallelize_teardownメソッド

Modelテスト

  • Modelテストを作成する―rails generate test_unit:modelコマンド
  • Modelテストを準備する―testメソッド
  • Modelテストの結果をチェックする―assert_xxxxxメソッド
  • 無条件にテストメソッドを失敗させる―flunkメソッド
  • フィクスチャの内容を参照する―フィクスチャの展開
  • テストの準備と後始末を行う―setup/teardownメソッド
  • Modelテストを実行する―rails testコマンド

Functionalテスト

  • Functionalテストを作成する―rails generate test_unit:scaffoldコマンド
  • Functionalテストを準備する―testメソッド
  • Functionalテストでコントローラを起動する―get/post/patch/put/delete/headメソッド
  • Functionalテストの結果をチェックする―assert_xxxxxメソッド
  • テンプレートによる出力結果をチェックする―assert_selectメソッド
  • Functionalテストを実行する―rails testコマンド

Integrationテスト

  • Integrationテストを準備する―rails generate integration_testコマンド
  • Integrationテストでコントローラを起動する―get/post/patch/put/delete/head/follow_redirectメソッド
  • Integrationテストを実行する―rails test:integrationコマンド

Systemテスト

  • Systemテストを作成する―rails generate system_testコマンド
  • Systemテストを準備する―visit/fill_in/check/click_onメソッド
  • Systemテストを実行する―rails test:systemコマンド
  • スクリーンショットを撮る―take_screenshot/take_failed_screenshotメソッド

Chapter 7 コンポーネント

Action Mailer

  • メール送信のための共通設定を定義する―action_mailer.xxxxxパラメータ
  • メーラークラスを自動生成する―rails generate mailerコマンド
  • メール送信のための処理を実装する―default/mailメソッド
  • メールヘッダを設定する―headersメソッド
  • メールテンプレートで利用するurl_forオプションを宣言する―action_mailer.default_url_optionsパラメータ
  • メールを送信する―deliverメソッド
  • HTMLメールを送信する―.html.erbファイル
  • メール本文に共通のテキストを挿入する―layoutメソッド
  • 添付ファイル付きメールを送信する―attachmentsメソッド
  • メールの出力形式を制御する―mailメソッド

Action Mailbox

  • 概要
  • Action Mailboxをインストールする―rails action_mailbox:installコマンド
  • イングレスのための資格情報を登録する―rails credentials:editコマンド
  • イングレスのための設定を定義する(SMTPリレーエージェント)―action_mailbox.ingressパラメータ/rails action_mailbox:ingress:xxxxコマンド
  • イングレスのための設定を定義する(メールサービスプロバイダ)―action_mailbox.ingressパラメータ
  • ルーティングルールを設定する―routingメソッド
  • メールボックスをセットアップする―rails generate mailboxコマンド
  • メール受信の前処理を行う―before_processingメソッド
  • メールを返信する―bounce_withメソッド
  • 受信メールを処理する―processメソッド
  • メールが削除されるまでの時間を設定する―action_mailbox.incinerate_afterパラメータ
  • development環境でメール受信を実行する―コンダクターコントローラ

Action Text

  • 概要
  • Action Textをインストールする―rails action_text:installコマンド
  • モデルにリッチテキストフィールドを追加する―has_rich_textメソッド
  • リッチテキストフィールドをフォームで参照する―rich_text_areaメソッド

Action Cable

  • 概要
  • サーバにチャネルを作成する―rails generate channelコマンド
  • サブスクライブされたときの処理を指定する―subscribed/unsubscribedメソッド
  • クライアントにサブスクリプションを作成する―consumer.subscriptions.createメソッド
  • ストリームを作成する―stream_fromメソッド
  • クライアントからアクションを実行する―performメソッド
  • 特定のモデルにブロードキャストする―stream_for/broadcast_toメソッド
  • ブロードキャストする―broadcastメソッド
  • サブスクリプションアダプタを設定する―cable.ymlファイル
  • 許可する送信元を設定する―action_cable.allowed_request_origins/action_cable.disable_request_forgery_protectionパラメータ

Active Storage

  • 概要
  • 画像処理サポートのためのライブラリをインストールする(Windows)
  • 画像処理サポートのためのライブラリをインストールする(macOS)
  • Active Storageをセットアップする―rails active_storage:installコマンド
  • サービスを定義する―storage.ymlファイル
  • サービスにAmazon S3を使う―storage.ymlファイル
  • サービスにMicrosoft Azure Storageを使う―storage.ymlファイル
  • サービスにGoogle Cloud Storageを使う―storage.ymlファイル
  • 利用サービスを設定する―active_storage.serviceパラメータ
  • ファイルとレコードにマッピングを設定する(1対1)―has_one_attachedメソッド
  • ファイルとレコードにマッピングを設定する(1対多)―has_many_attachedメソッド
  • ファイルをアップロードする―file_fieldメソッド
  • ファイルを表示する―representable?/representationメソッド
  • ファイルをプレビューする―previewable?/previewメソッド
  • レコードにファイルを添付する―attachメソッド
  • ファイルが添付されているか調べる―attached?メソッド
  • 添付ファイルのバリアントを指定する―variantメソッド
  • バリアントプロセッサを指定する―active_storage.variant_processorパラメータ
  • ファイルシステムのファイルを添付する―attachメソッド
  • 添付ファイルを削除する―purge/purge_laterメソッド
  • リダイレクトモードでファイルを配信する―url_for/rails_blob_xxxxメソッド
  • プロキシモードでファイルを配信する―rails_storage_proxy_xxxxメソッド/active_storage.resolve_model_to_routeパラメータ
  • ファイルをダウンロードする―openメソッド
  • ファイルが解析済みか調べる―analyzed?メソッド
  • 画像を変形する―variable?/variantメソッド

Active Job

  • 概要
  • ジョブを作成する―rails generate jobコマンド
  • キューを指定してジョブを作成する―rails generate jobコマンド
  • ジョブをキューに登録する―perform_laterメソッド
  • ジョブの実行タイミングなどを指定する―setメソッド
  • キューアダプタを指定する―active_job.queue_adapterパラメータ/queue_adpterメソッド
  • ジョブが使うキューを指定する―queue_asメソッド/active_job.queue_name_prefixパラメータ
  • ジョブをただちに実行する―perform_nowメソッド
  • コールバックを設定する―xxxx_enqueue/xxxx_performメソッド
  • 例外をキャッチする―rescue_from/retry_on/discard_onメソッド

キャッシュ

  • キャッシュを有効化する―action_controller.perform_cachingパラメータ
  • 開発環境でキャッシュの有効・無効を切り替える―rails dev:cacheコマンド
  • ページの一部分をキャッシュする(フラグメントキャッシュ)―cacheメソッド
  • 複数のページでフラグメントキャッシュを共有する―cacheメソッド
  • フラグメントキャッシュの有無を確認する―fragment_exist?メソッド
  • キャッシュの保存方法を変更する―cache_storeパラメータ

プラグイン

  • プラグインとは?
  • ページング機能を実装する(アクションメソッド)―paginateメソッド
  • ページング機能を実装する(テンプレート)―will_paginateメソッド
  • ページングに関する情報を取得する―will_paginateプラグイン
  • アプリケーションに認証機能を実装する―rails generate deviseコマンド
  • 認証の諸機能へのリンクを作成する―xxxxx_pathメソッド
  • コントローラクラスに認証機能を実装する―authenticate_xxxxx!メソッド
  • ログインユーザの情報を取得する―xxxxx_signed_in?/current_xxxxx/xxxxx_sessionメソッド
  • 認証関連ページを日本語化する―devise.ja.ymlファイル

Chapter 8 フロントエンド開発

  • 概要
  • 基本的な構成
  • バンドラーを使う構成
  • CSSプロセッサを使う構成
  • フロントエンド関連のデフォルト構成

基本コマンド

  • JavaScript/CSSをビルドしてサーバを起動する―bin/devコマンド
  • アセットを事前コンパイルする―rails assets:xxxxxコマンド

アセットパイプライン

  • 概要
  • Sprocketsの挙動を制御する―assets.xxxxxパラメータ
  • Propshaftの挙動を制御する―assets.xxxxxパラメータ
  • JavaScript/スタイルシートをインクルードする―javascript_include_tag/stylesheet_link_tagメソッド
  • JavaScriptのコードをエスケープ処理する―jメソッド

Import Maps

  • 概要
  • モジュールをコマンドでピン留め/解除する―importmapコマンド
  • モジュールをピン留め/解除する―pin/pin_all_fromメソッド
  • マッピングをインクルードする―javascript_importmap_tagメソッド
  • マッピングを出力する―importmapコマンド

JavaScriptバンドル

  • 概要
  • バンドラーをアプリケーションに組み込む―rails newコマンド
  • バンドラーの動作をカスタマイズする―esbuild/rollup/webpackコマンド

CSSバンドル

  • 概要
  • CSSプロセッサをアプリケーションに組み込む―rails newコマンド

Hotwire

  • 概要
  • Hotwireをフォーム/リンク単位で無効にする―form_with/link_toメソッド
  • Hotwireをアプリケーション全体で無効にする―Turbo.session.driveメソッド
  • フレームを作成する―turbo_frame_tagメソッド
  • コンテンツを挿入する―turbo_stream.prepend/turbo_stream.appendメソッド
  • コンテンツを置き換える―turbo_stream.replace/turbo_stream.updateメソッド
  • コンテンツを削除する―turbo_stream.removeメソッド

付録

  • 本番環境へのデプロイ

コラム

  • AbstractController::DoubleRenderError例外に要注意
  • JSONを整形して見るJSONViewer
  • Rails以外のRubyによるWAF
  • Windows版Rubyは最新版をむやみにインストールしない
  • Railsの「宣言」記法とクラスメソッド
  • concernsフォルダとは?
  • RailsアプリをVSCodeで開発する
  • Railsアプリケーションの初期化ファイルの使い分け
  • has_many/has_oneとbelongs_toメソッドは双方必須?
  • gemコマンドの主なオプション
  • コーディング規約
  • Rubyの高速化アプローチ
  • 日付/時刻に関する便利なメソッド
  • binフォルダとは?
  • 状態管理の手法
  • ハッシュの省略形には要注意
  • HTML5とHTML Living Standard
  • Railsを支える標準基盤 - Rack
  • Railsアプリ開発に役立つ情報源
  • Railsをより深く学ぶための参考書籍
  • コードの改行位置に要注意
  • Action~とActive~の違いとは?
  • Pipedream
  • Trixエディタ
  • rakeコマンド?railsコマンド?
  • Railsアプリケーションの配布
  • Bootsnap
  • Import MapsとWebブラウザ
  • JavaScriptバンドラーの比較
  • Stimulusとは?