目次
第1章 イントロダクション
1.1 Railsというフレームワーク
- 1.1.1 アプリケーションフレームワークとは
- 1.1.2 フレームワーク導入の利点
- 1.1.3 Rubyで利用可能なフレームワーク
1.2 Railsを利用するための環境設定
- 1.2.1 Railsプログラミングに必要なソフトウェア
- 1.2.2 Windowsにおける環境設定の手順
- 1.2.3 Linuxにおける環境設定の手順
- 1.2.4 サンプルの配置方法(Windows/Linux共通)
第2章 Ruby on Railsの基本
2.1 アプリケーションの作成
2.2 コントローラの基本
- 2.2.1 コントローラクラスの作成
- 2.2.2 コントローラクラスの基本構文
- 2.2.3 ルーティングの基礎を理解する
- 2.2.4 サンプルの実行
- 2.2.5 補足:コントローラの命名規則
2.3 ビューの基本
- 2.3.1 テンプレート変数の設定
- 2.3.2 テンプレートファイルの作成
- 2.3.3 補足:共通レイアウトの適用
- 2.3.4 補足:コメント構文
2.4 モデルの基本
- 2.4.1 O/Rマッパーとは?
- 2.4.2 データベース接続の設定
- 2.4.3 モデルクラスの作成
- 2.4.4 マイグレーションファイルによるテーブルの作成
- 2.4.5 フィクスチャによるテストデータの準備
- 2.4.6 補足:データベースクライアントの起動
- 2.4.7 データ取得の基本
- 2.4.8 補足:アプリケーションの実行環境を指定する
2.5 Railsの設定情報
- 2.5.1 主な設定ファイルの配置
- 2.5.2 利用可能な主な設定パラメータ
- 2.5.3 アプリケーション固有の設定を定義する
第3章 Scaffolding機能によるRails開発の基礎
3.1 Scaffolding機能によるアプリケーション開発
- 3.1.1 Scaffolding開発の手順
- 3.1.2 自動生成されたルートを確認する - resourcesメソッド
3.2 一覧画面の作成(indexアクション)
- 3.2.1 indexアクションメソッド
- 3.2.2 index.html.erbテンプレート
3.3 詳細画面の作成(showアクション)
- 3.3.1 showアクションメソッド
- 3.3.2 show.html.erbテンプレート
3.4 新規登録画面の作成(new/createアクション)
- 3.4.1 new.html.erbテンプレートファイル
- 3.4.2 new/createアクションメソッド
3.5 編集画面の作成(edit/updateアクション)
- 3.5.1 edit/updateアクションメソッド
- 3.5.2 edit.html.erbテンプレートファイル
3.6 削除機能の確認(destroyアクション)
3.7 準備: 本書で使用するデータベース
- 3.7.1 データベースの構造
- 3.7.2 データベースの準備
第4章 ビュー開発
4.1 フォーム関連のビューヘルパー
- 4.1.1 フォーム生成の基礎
- 4.1.2 汎用的なフォームを出力する - form_tagメソッド
- 4.1.3 モデル編集のためのフォームを生成する(1) - form_tagメソッド
- 4.1.4 モデル編集のためのフォームを生成する(2) - form_forメソッド
- 4.1.5 <input>,<textarea>要素を生成する - xxxxx _field,text_area,radio_button,check_boxメソッド
- 4.1.6 HTML5対応の<input>要素を生成する - xxxxx _fieldメソッド(2)
- 4.1.7 選択ボックス/リストボックスを生成する - selectメソッド
- 4.1.8 データベースの情報をもとに選択肢を生成する - collection_selectメソッド
- 4.1.9 選択ボックスの選択肢をグループ化する - grouped_collection_selectメソッド
- 4.1.10 モデルと関連付かない選択ボックスを生成する - select_tagメソッド
- 4.1.11 日付/時刻選択のための選択ボックスを生成する - xxxxx_selectメソッド
- 4.1.12 データベースの情報をもとにラジオボタン/チェックボックスを生成する - collection_radio_buttons/collection_check_boxesメソッド
- 4.1.13 その他のフォーム系ヘルパー
4.2 文字列/数値関連のビューヘルパー
- 4.2.1 改行文字を<p>,<br>タグで置き換える - simple_formatメソッド
- 4.2.2 文字列を指定桁で切り捨てる - truncateメソッド
- 4.2.3 文字列から特定の部分のみを抜粋する - excerptメソッド
- 4.2.4 テーブルやリストの背景色をn行おきに変更する - cycleメソッド
- 4.2.5 特定のキーワードをハイライト表示する - highlightメソッド
- 4.2.6 スクリプトブロックの中に出力コードを埋め込む - concatメソッド
- 4.2.7 文字列をHTMLエスケープする - h / rawメソッド
- 4.2.8 文字列からタグを除去する - sanitizeメソッド
- 4.2.9 文字列を整形する - sprintfメソッド
- 4.2.10 数値をさまざまな形式で加工する - number_xxxxxメソッド
- 4.2.11 日付データを整形する - strftimeメソッド
4.3 リンク関連のビューヘルパー
- 4.3.1 ハイパーリンクを生成する - link_toメソッド
- 4.3.2 ルート定義から動的にURLを生成する - url_forメソッド
- 4.3.3 条件に応じてリンクを生成する - link_to_if/link_to_unlessメソッド
- 4.3.4 現在のページの場合はリンクを無効にする - link_to_unless_currentメソッド
- 4.3.5 メールアドレスへのリンクを生成する - mail_toメソッド
4.4 外部リソース指定のためのビューヘルパー
- 4.4.1 イメージタグを生成する - image_tagメソッド
- 4.4.2 音声,動画をブラウザで再生する - audio_tag/video_tagメソッド
- 4.4.3 ブラウザのフィード検出機能を有効にする - auto_discovery_link_tagメソッド
- 4.4.4 サイトのFaviconを定義する - favicon_link_tagメソッド
- 4.4.5 外部リソースのパスを取得する - path_to_xxxxx メソッド
4.5 その他のビューヘルパー
- 4.5.1 構造化データをダンプ出力する - debugメソッド
- 4.5.2 出力結果を変数に格納する - captureメソッド
- 4.5.3 本体を持たない任意のタグを生成する - tagメソッド
- 4.5.4 本体を持つ任意のタグを生成する - content_tagメソッド
4.6 ビューヘルパーの自作
- 4.6.1 シンプルなビューヘルパー
- 4.6.2 HTML文字列を返すビューヘルパー
- 4.6.3 本体を持つビューヘルパー
4.7 アプリケーション共通のデザインを定義する - レイアウト
- 4.7.1 レイアウトを適用するさまざまな方法
- 4.7.2 ページ単位にタイトルを変更する
- 4.7.3 レイアウトに複数のコンテンツ領域を設置する
- 4.7.4 レイアウトを入れ子に配置する
4.8 テンプレートの一部をページ間で共有する - 部分テンプレート
- 4.8.1 部分テンプレートの基本
- 4.8.2 部分テンプレートにパラメータを引き渡す
- 4.8.3 コレクションに繰り返し部分テンプレートを適用する - collectionオプション
第5章 モデル開発
5.1 データ取得の基本 - findメソッド
- 5.1.1 主キー列による検索
- 5.1.2 任意のキー列による検索 - find_byメソッド
5.2 より複雑な条件での検索を行う - クエリメソッド
- 5.2.1 クエリメソッドの基礎
- 5.2.2 基本的な条件式を設定する - whereメソッド
- 5.2.3 プレイスホルダによる条件式の生成 - whereメソッド(2)
- 5.2.4 名前付きパラメータと名前なしパラメータ
- 5.2.5 否定の条件式を表す - notメソッド
- 5.2.6 データを並べ替える - orderメソッド
- 5.2.7 ソート式を上書きする - reorderメソッド
- 5.2.8 取得列を明示的に指定する - selectメソッド
- 5.2.9 重複のないレコードを取得する - distinctメソッド
- 5.2.10 特定範囲のレコードだけを取得する - limit/offsetメソッド
- 5.2.11 先頭/末尾のレコードを取得するには - first/lastメソッド
- 5.2.12 データを集計する - groupメソッド
- 5.2.13 集計結果をもとにデータを絞り込む - havingメソッド
- 5.2.14 条件句を破壊的に代入する - where!メソッド
- 5.2.15 クエリメソッドによる条件式を除去する - unscopeメソッド
- 5.2.16 空の結果セットを取得する - noneメソッド
5.3 データ取得のためのその他のメソッド
- 5.3.1 指定列の配列を取得する - pluckメソッド
- 5.3.2 データの存在を確認する - exists?メソッド
- 5.3.3 よく利用する条件句をあらかじめ準備する - 名前付きスコープ
- 5.3.4 デフォルトのスコープを定義する - default_scopeメソッド
- 5.3.5 検索結果の行数を取得する - countメソッド
- 5.3.6 特定条件に合致するレコードの平均や最大/最小を求める
- 5.3.7 生のSQL命令を直接指定する - find_by_sqlメソッド
5.4 レコードの登録/更新/削除
- 5.4.1 複数のレコードをまとめて更新する - update_allメソッド
- 5.4.2 レコードを削除する - destroy / deleteメソッド
- 5.4.3 複数のレコードをまとめて削除する - destroy_allメソッド
- 5.4.4 トランザクション処理を実装する - transactionメソッド
- 5.4.5 補足:トランザクション分離レベルを指定する
- 5.4.6 オプティミスティック同時実行制御
- 5.4.7 補足:その他の更新系メソッド
5.5 検証機能の実装
- 5.5.1 Active Modelで利用できる検証機能
- 5.5.2 検証機能の基本
- 5.5.3 その他の検証クラス
- 5.5.4 検証クラス共通のパラメータ
- 5.5.5 自作検証クラスの定義
- 5.5.6 データベースに関連づかないモデルを定義する - ActiveModel::Modelモジュール
5.6 アソシエーションによる複数テーブルの処理
- 5.6.1 リレーションシップと命名規則
- 5.6.2 参照元テーブルから被参照テーブルの情報にアクセスする - belongs_toアソシエーション
- 5.6.3 1:nの関係を表現する - has_manyアソシエーション
- 5.6.4 1:1の関係を表現する - has_oneアソシエーション
- 5.6.5 m:nの関係を表現する(1) - has_and_belongs_to_manyアソシエーション
- 5.6.6 m:nの関係を表現する(2) - has_many throughアソシエーション
- 5.6.7 アソシエーションによって追加されるメソッド
- 5.6.8 アソシエーションで利用できるオプション
- 5.6.9 関連するモデルと結合する - joinsメソッド
- 5.6.10 関連するモデルをまとめて取得する - includesメソッド
5.7 コールバック
- 5.7.1 利用可能なコールバックと実行タイミング
- 5.7.2 コールバック実装の基本
- 5.7.3 コールバックのさまざまな定義方法
5.8 マイグレーション
- 5.8.1 マイグレーションのしくみ
- 5.8.2 マイグレーションファイルの構造
- 5.8.3 マイグレーションファイルの作成
- 5.8.4 マイグレーションファイルで利用できる主なメソッド
- 5.8.5 マイグレーションファイルの実行
- 5.8.6 リバーシブルなマイグレーションファイル
- 5.8.7 スキーマファイルによるデータベースの再構築
- 5.8.8 データの初期化
第6章 コントローラ開発
6.1 リクエスト情報
- 6.1.1 リクエスト情報を取得する - paramsメソッド
- 6.1.2 マスアサインメント脆弱性を回避する - StrongParameters
- 6.1.3 リクエストヘッダを取得する - headersメソッド
- 6.1.4 リクエストヘッダやサーバ環境変数を取得するための専用メソッド
- 6.1.5 ファイルをアップロードする(1) - ファイルシステムへの保存
- 6.1.6 ファイルをアップロードする(2) - データベースへの保存
6.2 レスポンスの操作
- 6.2.1 テンプレートファイルを呼び出す - renderメソッド(1)
- 6.2.2 レスポンスをインラインで設定する - renderメソッド(2)
- 6.2.3 空のコンテンツを出力する - render&headメソッド
- 6.2.4 処理をリダイレクトする - redirect_toメソッド
- 6.2.5 ファイルの内容を出力する - send_fileメソッド
- 6.2.6 バイナリデータを出力する - send_dataメソッド
- 6.2.7 補足:ログを出力する - loggerオブジェクト
6.3 HTML以外のレスポンス処理
- 6.3.1 モデルの内容をXML/JSON形式で出力する
- 6.3.2 テンプレート経由でJSON/XMLデータを生成する - JBuilder/Builder
- 6.3.3 補足:Rubyスクリプトの結果を出力する - Rubyテンプレート
- 6.3.4 マルチフォーマット出力に対応する - respond_toメソッド
6.4 状態管理
- 6.4.1 クッキーを取得/設定する - cookiesメソッド
- 6.4.2 補足:永続化クッキー,暗号化クッキー
- 6.4.3 セッションを利用する - sessionメソッド
- 6.4.4 フラッシュを利用する - flashメソッド
6.5 フィルタ
- 6.5.1 アクションの事前/事後に処理を実行する - before/afterフィルタ
- 6.5.2 アクションの前後で処理を実行する - aroundフィルタ
- 6.5.3 フィルタの適用範囲をカスタマイズする
- 6.5.4 例:フィルタによる基本認証の実装
- 6.5.5 例:フィルタによるフォーム認証の実装
6.6 アプリケーション共通の挙動を定義する - Applicationコントローラ
- 6.6.1 共通フィルタの定義 - ログイン機能の実装
- 6.6.2 共通的な例外処理をまとめる - rescue_fromメソッド
- 6.6.3 クロスサイトリクエストフォージェリ対策を行う - protect_from_forgeryメソッド
- 6.6.4 独自のフラッシュメッセージを追加する - add_flash_typesメソッド
- 6.6.5 補足:共通ロジックをモジュールにまとめる - concernsフォルダ
第7章 ルーティング
7.1 RESTfulインターフェイスとは
- 7.1.1 RESTfulインターフェイスを定義する - resourcesメソッド
- 7.1.2 単一のリソースを定義する - resourceメソッド
- 7.1.3 補足:ルート定義を確認する
7.2 RESTfulインターフェイスのカスタマイズ
- 7.2.1 ルートパラメータの制約条件 - constraintsオプション
- 7.2.2 より複雑な制約条件の設定 - 制約クラスの定義
- 7.2.3 formatパラメータを除去する - formatオプション
- 7.2.4 コントローラクラス/Urlヘルパーの名前を修正する - controllers/asオプション
- 7.2.5 モジュール配下のコントローラをマッピングする - namespace/scopeブロック
- 7.2.6 RESTfulインターフェイスに自前のアクションを追加する - collection/memberブロック
- 7.2.7 RESTfulインターフェイスのアクションを無効化する - only/exceptオプション
- 7.2.8 階層構造を持ったリソースを表現する - resourcesメソッドのネスト
- 7.2.9 リソースの「浅い」ネストを表現する - shallowオプション
- 7.2.10 ルート定義を再利用可能にする - concernメソッド&concernsオプション
7.3 非RESTfulなルートの定義
- 7.3.1 非RESTfulルートの基本 - matchメソッド
- 7.3.2 さまざまな非RESTful ルートの表現
- 7.3.3 ルートへのマッピングを定義する - rootメソッド
第8章 テスト
8.1 テストとは
8.2 テストの準備
- 8.2.1 テストデータベースの構築
- 8.2.2 テストデータを準備する
8.3 Unitテスト
- 8.3.1 Unitテストの基本
- 8.3.2 Unitテストの具体例
- 8.3.3 テストの準備と後始末 - setup/teardownメソッド
8.4 Functionalテスト
- 8.4.1 Functionalテストの基本
- 8.4.2 Functionalテストで利用できるAssertionメソッド
8.5 Integrationテスト
第9章 クライアントサイド開発
9.1 JavaScript/スタイルシートのインポート
- 9.1.1 マニフェストの基本
9.2 Asset Pipeline
- 9.2.1 Asset Pipelineのしくみ
- 9.2.2 実行環境による挙動の違い
- 9.2.3 Asset Pipelineの挙動を制御する
9.3 CoffeeScript
- 9.3.1 CoffeeScriptの基本
- 9.3.2 CoffeeScriptの基本構文
- 9.3.3 変数とリテラル表現
- 9.3.4 演算子
- 9.3.5 制御構文
- 9.3.6 関数
- 9.3.7 オブジェクト指向構文
- 9.3.8 補足:即時関数
9.4 Sass(SCSS)
- 9.4.1 SCSSの基本
- 9.4.2 スタイル定義のネスト
- 9.4.3 変数
- 9.4.4 演算子
- 9.4.5 関数
- 9.4.6 ディレクティブ
- 9.4.7 コメント
9.5 Ajax開発
- 9.5.1 Ajaxの基礎知識
- 9.5.2 Ajax対応のハイパーリンクを生成する - link_toメソッド
- 9.5.3 補足:更新コンテンツの生成は部分テンプレートで
- 9.5.4 Ajax対応のフォームを生成する - form_tag/form_forメソッド
- 9.5.5 Ajax通信でJSONデータを利用する
- 9.5.6 補足:Ajax呼び出しの際に進捗メッセージを表示する
- 9.5.7 Slideshare APIを利用する
9.6 Turbolinks
- 9.6.1 Turbolinksのしくみ
- 9.6.2 Turbolinksの落とし穴
- 9.6.3 Turbolinksを無効にする
- 9.6.4 リンク単位でTurbolinksを無効にする
第10章 Railsの高度な機能
10.1 電子メールを送信する - Action Mailer
- 10.1.1 Action Mailerを利用する準備
- 10.1.2 メール送信の基本
- 10.1.3 複数フォーマットでのメール配信
- 10.1.4 メール送信前に任意の処理を実行する - インターセプタ
- 10.1.5 メーラーのUnitテスト
10.2 キャッシュ機能の実装
- 10.2.1 フラグメントキャッシュの基本
- 10.2.2 フラグメントキャッシュを複数ページで共有する
- 10.2.3 モデルをもとにキャッシュキーを決める
- 10.2.4 指定の条件に応じてキャッシュを有効にする
- 10.2.5 キャッシュの格納先を変更する
10.3 アプリケーションの国際化対応 - I18n API
- 10.3.1 国際化対応アプリケーションの全体像
- 10.3.2 国際化対応の基本的な手順
- 10.3.3 ロケールを動的に設定する方法 - ApplicationController
- 10.3.4 辞書ファイルのさまざまな配置と記法
- 10.3.5 Rails標準の翻訳情報を追加する
- 10.3.6 ビューヘルパーtの各種オプション
10.4 Rails の機能拡張
- 10.4.1 Rails 4で利用できるライブラリ
- 10.4.2 ページング機能を実装する - will_paginate
10.5 本番環境への移行
- 10.5.1 Apache+Passenger環境への配置
- 10.5.2 Heroku環境への配置