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

書籍の概要

この本の概要

13年のロングセラーシリーズ・ポケットリファレンスにWebアプリケーションフレームワークの新定番であるRuby on Rails 3が新登場。逆引き形式で目的の情報をすぐ探せて,サンプルコードを見ながら具体的な実装のイメージがつかめます。Rails3.1以降に対応,標準ライブラリとなったjQueryやCoffeeScriptの話題もフォローしています。開きやすい特殊製本とめくりやすい用紙を採用して検索性も抜群。定番解説書である『Ruby on Rails 3 アプリケーションプログラミング』の著者・山田祥寛氏による,現場で役立つ信頼の1冊です。

こんな方におすすめ

  • Ruby on Rails 3でできることを目的から知りたい方
  • Ruby on Rails 3でできることをてっとり早く俯瞰したい方

著者の一言

Ruby on Rails(以降,Rails)1.0がリリースされたのが2005年12月のことですから,まだまだ誕生したばかりと思っていたRailsも,既に6年以上の年輪を刻んでいることになります。変遷の激しいこの世界から見れば,もう十分に枯れたフレームワークといっても良いはずなのですが,Railsにはそうした雰囲気を感じさせないところがあります。それもRailsが未だもって意欲的に変革を求め,他のフレームワークに対して強い影響を与え続けているからでしょう。

2007年12月にリリースされたRails 2は,Rails 1に対してさまざまな機能を建て増していったバージョンでした。RESTfulインターフェイス,国際化機能,Rack対応などなど,現在のバージョンの基礎ともなる機能が,このバージョンで追加されています。

2010年8月にリリースされたRails 3.0では,それまでの一枚岩な構造を捨てて,Modularity(モジュール志向)を強く打ち出しています。これによって,Rails 3では目的に合ったコンポーネントの選択が簡単に行えるようになりました。また,ルーティングやActive Recordのクエリ記法が再設計され,より自然なコードの記述が可能になっています。Rails 3.0はRails 2の路線を引き継ぎつつも,新たな要素を意欲的に盛り込んだ躍進のバージョンであるといえます。そして,最新のRails 3.1ではCoffeeScript/SCSSの標準搭載によって,クライアントサイド開発に対する新たなアプローチを提案しています。

Railsは,まだまだ熱く,パラダイムを語り続けるフレームワークなのです。

本書は,このように進化を続けるRails 3について,よく利用するであろう機能を厳選して,逆引きリファレンスの形式で紹介する書籍です。執筆にあたっては,あまたあるRailsの潤沢な機能に,できるだけ目的からたどりつきやすいように心がけました。Railsを利用したアプリケーション開発にあたって,本書が座右の一冊となれば幸いです。

目次

第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コマンドを確認する ― rake -Tコマンド
  • 利用しているライブラリのバージョンを確認する ― rake aboutコマンド
  • ドキュメンテーションコメントで仕様書を作成する ― rake doc:xxxxxコマンド
  • 現在使用しているRailsのドキュメントを作成する ― rake doc:xxxxxコマンド
  • 開発中の懸案事項をメモする ― rake notesコマンド
  • Railsアプリケーションをバージョンアップする ― rake rails:updateコマンド
  • 自動生成されるコードをカスタマイズする ― rake rails:templates:copyコマンド
  • オリジナルのRakeタスクを作成する ― taskメソッド

第2章 コントローラ開発

  • 概要

コントローラの基本

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

リクエスト情報

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

レスポンス情報

  • テンプレートファイルを呼び出す ― renderメソッド
  • 文字列を出力する ― renderメソッド(:text)
  • アクションにインラインのテンプレートを記述する ― renderメソッド(:inline)
  • テンプレートに適用するレイアウトを変更する ― render(:layout)/layoutメソッド
  • XML形式のレスポンスを生成する ― renderメソッド(:xml)
  • JSON形式のレスポンスを生成する ― render(:json)メソッド
  • XML形式のデータをJSON形式に変換する ― from_xmlメソッド
  • 空のコンテンツを出力する(1) ― renderメソッド(:nothing/:status)
  • 空のコンテンツを出力する(2) ― headメソッド
  • テンプレートでの処理結果を文字列として取得する ― render_to_stringメソッド
  • 他のページにリダイレクトする ― redirect_toメソッド
  • 指定されたファイルを出力する ― send_fileメソッド
  • クライアントにバイナリデータを送信する ― send_dataメソッド
  • 拡張子に応じて応答フォーマットを切り替える ― respond_toメソッド
  • 拡張子に応じて応答フォーマットを切り替える(簡易版) ― respond_to/respond_withメソッド
  • 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パラメータ
  • セッション格納のデータベースを準備する ― rake db:sessions:create/rake db:sessions:clearコマンド
  • リダイレクト前後で一時的にデータを維持する(1) ― redirect_toメソッド(:alert/:notice/:flash)
  • リダイレクト前後で一時的にデータを維持する(2) ― flashメソッド
  • 現在のアクションでのみ有効なフラッシュを定義する ― nowメソッド
  • フラッシュを次のリクエストに持ち越す ― keepメソッド
  • フラッシュを破棄する ― discardメソッド

ログ管理

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

フィルタ

  • アクションの直前/直後に処理を実行する ― before_filter/after_filterメソッド
  • アクションの前後で処理を実行する ― around_filterメソッド
  • フィルタを簡単に定義する ― before_filter/around_filter/after_filterメソッド
  • 複数のコントローラでフィルタを共有する ― before/after/filterメソッド
  • 親コントローラから継承したフィルタを除外する ― skip_filter/skip_xxxxx_filterメソッド
  • フィルタの実行順序を変更する ― prepend_xxxxx_filterメソッド
  • 基本認証を実装する ― 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メソッド
  • コントローラに対応するヘルパーモジュールだけを読み込む ― clear_helpersメソッド
  • url_forメソッドに渡すデフォルトパラメータを設定する ― default_url_optionsメソッド
  • SSL通信を強制する ― force_sslメソッド

第3章 モデル開発

  • 概要

モデルの基本

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

マイグレーション

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

データの取得

  • テーブルからすべてのレコードを取得する ― allメソッド
  • 主キー値でデータを検索する ― findメソッド
  • 任意の列でデータを検索する ― find_all_by_xxxxx/find_by_xxxxxメソッド
  • テーブルの先頭/末尾のレコードを取得する ― 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_attributes/update_attributes!メソッド
  • 特定のフィールドを更新する ― update_attributeメソッド
  • 既存のモデルオブジェクトを変更する ― attributes=/assign_attributesメソッド
  • 複数のモデルオブジェクトをまとめて更新する ― updateメソッド
  • 複数のモデルオブジェクトを効率的に更新する ― update_allメソッド
  • 登録/更新時に一部のフィールドを保護する ― attr_protected/attr_accessibleメソッド
  • 既存のレコードを削除する ― 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メソッド
    • コールバックを複数のモデルで共有する ― コールバッククラス
    • オブザーバーを自動生成する ― rails generate observerコマンド
    • オブザーバーをアプリケーションに登録する ― active_record.observersパラメータ
    • 複数モデルを監視するオブザーバーを定義する ― observeメソッド

    第4章 ビュー開発

    • 概要

    ERBの基本

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

    レイアウト

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

    部分テンプレート

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

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

    • フォームヘルパーの分類
    • 汎用的なフォームを生成する ― form_tagメソッド
    • モデルと連携したフォームを生成する ― form_forメソッド
    • モデルと連携したフォームで入力要素を生成する ― xxxxx_field/text_areaメソッド
    • モデルと連携したフォームで入力要素を生成する(HTML5対応) ― xxxxx_fieldメソッド
    • モデルと連携したフォームでラジオボタン/チェックボックスを生成する ― radio_button/check_boxメソッド
    • 汎用的なフォームで入力要素を生成する ― xxxxx_tagメソッド
    • 選択ボックス/リストボックスを生成する ― selectメソッド
    • オブジェクト配列から選択ボックスを生成する ― collection_selectメソッド
    • 選択ボックスのオプションをグループ化する ― grouped_collection_selectメソッド
    • モデルと関連付かない選択ボックスを生成する ― select_tagメソッド
    • 配列/ハッシュから選択オプションを生成する ― options_for_selectメソッド
    • オブジェクト配列から選択オプションを生成する ― options_from_collection_for_selectメソッド
    • グループ化された選択オプションを生成する ― option_groups_from_collection_for_selectメソッド
    • 日付/時刻入力用の選択ボックスを生成する(モデル連携) ― xxxxx_selectメソッド
    • 日付/時刻入力用の選択ボックスを生成する ― select_xxxxxメソッド
    • 年月日/時分秒を入力するための選択ボックスを生成する ― select_xxxxxメソッド
    • ラベルテキストを生成する ― labelメソッド
    • モデルと連携したサブミットボタンを生成する ― submitメソッド
    • ボタン/サブミットボタンを生成する ― button_tag/submit_tag/image_submit_tagメソッド
    • form_forブロックの配下でサブフォームを定義する ― 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メソッド
    • JavaScriptファイルをインクルードする(Rails 3.0環境) ― javascript_include_tagメソッド
    • スタイルシートをインクルードする(Rails 3.0環境) ― stylesheet_link_tagメソッド
    • JavaScript/スタイルシートをインクルードする(Rails 3.1環境) ― javascript_include_tag/stylesheet_link_tagメソッド
    • Asset Pipelineの挙動を制御する ― assets.xxxxxパラメータ
    • アセットを事前コンパイルする ― rake assets:xxxxxコマンド
    • サイトのFaviconを設定する ― favicon_link_tagメソッド
    • ブラウザにフィードの存在を通知する ― auto_discovery_link_tagメソッド
    • 外部リソースのパスを取得する ― path_to_xxxxxメソッド

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

    • 改行文字を


      タグで置き換える ― simple_formatメソッド

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

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

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

    ビューヘルパー(Ajax)

    • RailsアプリケーションでjQueryを有効化する ― javascript_expansionsパラメータ
    • Ajax対応のハイパーリンクを生成する ― link_toメソッド(:remote)
    • JavaScriptのコードをエスケープ処理する ― jメソッド
    • Ajax対応のフォームを生成する ― form_tag/form_forメソッド(:remote)

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

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

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

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

    第5章 ルーティング

    • 概要

    基本コマンド

    • 現在のルート定義を確認する ― rake 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メソッド
    • ルーティングすべきHTTPメソッドを制限する ― :viaオプション
    • 非RESTfulインターフェイスでルートパラメータに制約条件を付与する ― :constraintsオプション
    • ルートパラメータのデフォルト値を設定する ― :defaultsオプション
    • ルート定義をリダイレクトする ― redirectメソッド
    • 非RESTfulインターフェイスで自動生成するUrlヘルパーの名前を変更する ― :asオプション
    • トップページへのルートを定義する ― rootメソッド

    第6章 テスト

    • 概要

    基本コマンド

    • テストデータベースを作成する ― rake db:test:xxxxxコマンド

    Unitテスト

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

    Functionalテスト

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

    Integrationテスト

    • Integrationテストを準備する ― rails generate integration_testコマンド
    • Integrationテストでコントローラを起動する ― get/post/put/delete/headメソッド
    • リダイレクト処理を追跡する ― follow_redirect!/xxxxx_via_redirectメソッド
    • Integrationテストを実行する ― rake test:integrationコマンド

    第7章 Action Mailer/キャッシュ/プラグイン

    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_controller.perform_cachingパラメータ
    • ページ全体をキャッシュする(ページキャッシュ) ― caches_pageメソッド
    • フィルタ機能を有効にしつつページ全体をキャッシュする(アクションキャッシュ) ― caches_actionメソッド
    • ページの一部分をキャッシュする(フラグメントキャッシュ) ― cacheメソッド
    • 複数のページでフラグメントキャッシュを共有する ― cacheメソッド
    • フラグメントキャッシュの有無を確認する ― fragment_exist?メソッド
    • キャッシュの保存方法を変更する ― cache_storeパラメータ
    • キャッシュデータを破棄する ― expire_page/expire_action/expire_fragmentメソッド
    • 特定のタイミングでキャッシュを破棄する ― ActionController::Caching::Sweeperクラス
    • スイーパーを登録する ― cache_sweeperメソッド

    プラグイン

    • プラグインとは?
    • ページング機能を実装する(アクションメソッド) ― paginateメソッド
    • ページング機能を実装する(テンプレート) ― will_paginateメソッド
    • ページングに関する情報を取得する ― will_paginateプラグイン
    • 時間のかかる処理を非同期に実行する(準備編) ― Delayed::Jobプラグイン
    • 時間のかかる処理を非同期に実行する(登録編) ― delayメソッド
    • 時間のかかる処理を非同期に実行する(実行編) ― delayed_jobコマンド
    • 待機中の非同期処理をクリアする ― rake jobs:clearコマンド
    • アプリケーションに認証機能を実装する ― rails generate deviseコマンド
    • 認証の諸機能へのリンクを作成する ― xxxxx_pathメソッド
    • コントローラクラスに認証機能を実装する ― authenticate_xxxxx!メソッド
    • ログインユーザの情報を取得する ― xxxxx_signed_in?/current_xxxxx/xxxxx_sessionメソッド
    • 認証関連ページを日本語化する ― devise.ja.yml

    付録

    CoffeeScript

    • CoffeeScriptの基本
    • 基本構文
    • コメント
    • 変数
    • 文字列
    • 配列/ハッシュ
    • 演算子/キーワード
    • if…else命令
    • unless命令
    • switch…when…else命令
    • while/until命令
    • for…in命令
    • 関数
    • クラスと継承

    Sass(SCSS)

    • SCSSの基本
    • スタイル定義のネスト
    • 変数
    • 演算子
    • 関数
    • ディレクティブ
    • コメント

    本番環境への移行

    • Apache+Passenger環境への配置
    • Heroku環境への配置

    コラム

    • AbstractController::DoubleRenderError例外に要注意
    • HTTPストリーミング
    • きれいなコードを書いていますか - コーディング規約
    • Has_many/has_oneとbelongs_toメソッドは双方必須なのか
    • gemコマンドの主なオプション
    • 状態管理の手法
    • 控えめなJavaScript
    • Rails 3.1で採用された新しいハッシュ記法
    • Railsの「宣言」記法とクラスメソッド
    • 日付/時刻に関する便利なメソッド
    • ハッシュの省略形には要注意
    • Railsを支える標準基盤 - Rack
    • Railsをより深く学ぶための参考書籍
    • コードの改行位置には要注意
    • Railsアプリ開発に役立つ情報源
    • Rails開発に役立つ統合開発環境 - Aptana Studio
    • RailsでHTTP PUT/DELETEを表現する方法

著者プロフィール

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

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