Deep Insider の Tutor コーナー
>>  Deep Insider は本サイトからスピンオフした姉妹サイトです。よろしく! 
書籍転載:Ruby on Rails 4アプリケーションプログラミング

書籍転載:Ruby on Rails 4アプリケーションプログラミング

Railsの設定情報

2014年5月20日

「第1章 イントロダクション」~「第2章 Ruby on Railsの基本」までの転載が完了。まとめて読んでRails開発を学ぼう。

  • このエントリーをはてなブックマークに追加

書籍転載について

 本コーナーは、技術評論社発行の書籍『Ruby on Rails 4アプリケーションプログラミング』の中から、特にBuild Insiderの読者に有用だと考えられる項目を編集部が選び、同社の許可を得て転載したものです。

 『Ruby on Rails 4アプリケーションプログラミング』の詳細や購入は技術評論社のサイト目次ページをご覧ください。

ご注意

本記事は、書籍の内容を改変することなく、そのまま転載したものです。このため用字用語の統一ルールなどはBuild Insiderのそれとは一致しません。あらかじめご了承ください。

 前回は「2.4 モデルの基本」を説明しました。本稿はその続きです。Railsアプリケーションの作成方法については、第1回から順にお読みください。

2.5 Railsの設定情報

 Railsアプリケーションの動作は、/configフォルダ配下の各種.rbファイル(設定ファイル)によって設定できます。以降の章でも何度も登場しますので、まずは基本的な構成をざっと鳥瞰しておきましょう。

2.5.1 主な設定ファイルの配置

 図2-19に、よく利用するファイルをまとめておきます。

/config
├─ application.rb …… すべての環境で共通の設定ファイル
├─ /environment …… 環境ごとの設定ファイル
│ ├─ development.rb …… 開発環境での設定
│ ├─ test.rb …… テスト環境での設定
│ └─ production.rb …… 本番環境での設定
├─ /initializers …… その他の初期化処理&設定情報
│ ├─ backtrace_silencers.rb …… 例外バックトレースをフィルタ
│ ├─ filter_parameter_logging.rb …… ロギングから除外するパラメータ情報の条件
│ ├─ inflections.rb …… 単数形/複数形の変換ルール
│ ├─ mime_types.rb …… アプリケーションで利用できるコンテンツタイプ(6.3.2項)
│ ├─ secret_token.rb …… クッキーを署名するためのトークン情報(6.4.2項)
│ └─ session_store.rb …… セッション保存のための設定情報(6.4.3項)
└─ /locales …… 国際化対応のためのリソースファイル(10.3節)
図2-19 /configフォルダ配下の主なファイル

表中で示されている「節」および「項」はいずれも転載対象外です。

 application.rbはアプリケーション共通の設定情報を、/environmentフォルダ配下の.rbファイルは各環境固有の設定情報を、それぞれ表します。よって、まず開発時にはdevelopment.rbを中心に編集を進めることになるでしょう。

 /initializersフォルダ配下の.rbファイル(初期化ファイル)は、アプリケーション起動時にまとめてロードされます。デフォルトで用意されているファイルは、上のツリー図の通りですが、必要に応じて自分で.rbファイルを追加することもできます*44

  • *44 初期化ファイルは再帰的に読み込まれますので、initializersフォルダ配下にサブフォルダを設けて、その配下に保存しても構いません。

 設定ファイル/初期化ファイルともに、アプリケーションの起動時に読み込まれますので、編集した場合にはWEBrickを再起動するのを忘れないようにしてください。

2.5.2 利用可能な主な設定パラメータ

 設定ファイルでは、「config.パラメータ = 値」の形式で、表2-10のような項目を設定できます。重要なものは、以降の章でも改めて個別に触れていきますので、まずは「こんなものがあるんだな」という程度で眺めてみてください。

分類パラメータ名概要
基本 cache_classes アプリケーションクラスをキャッシュするか(デフォルトはdevelopment、test環境でfalse、production環境でtrue*45
cache_store キャッシュの保存先(:memory_store、:file_store、:mem_cache_storeなど)
colorize_logging ログ情報をカラーリング表示するか(デフォルトはtrue)
autoload_paths 追加でロード対象となるパス(配列も可。たとえば、/libフォルダ配下のクラスを自動ロードさせるには、「config.autoload_paths += % W(#{config.root}/lib)」のように記述してください。)
asset_host Assetヘルパーで、付与するホスト名
log_level ログレベル(デフォルトは:debug*46
logger 使用するロガーの種類(無効にする場合はnil)
time_zone アプリケーションやActive Recordで利用するデフォルトのタイムゾーン*47
i18n.default_locale 国際化対応で利用するデフォルトのロケール(デフォルトは:en)
Active Record active_record.logger 利用するロガー(nilでロギングを無効化)
active_record.schema_format スキーマのダンプ形式(:ruby、:sql)。デフォルトは:ruby
active_record.timestamped_migrations マイグレーションファイルをタイムスタンプで管理するか(デフォルトはtrue。falseではシリアル番号)
Action Controller action_controller.default_charset デフォルトの文字コード(デフォルトはutf-8)
action_controller.logger 利用するロガー(nilでロギングを無効化)
action_controller.perform_caching キャッシュ機能を有効にするか
session_store セッションを格納するストア名(:cookie_store、:mem_cache_store、:disabledなど)
Action View action_view.default_form_builder デフォルトで利用されるフォームビルダ(デフォルトはActionView::Helpers::FormBuilder)
action_view.logger 利用するロガー(nilでロギングを無効化)
action_view.field_error_proc エラー時に入力要素を括るタグ( 例. Proc.new{ |html_tag, instance| % (#{html_tag}).html_safe })
表2-10 設定ファイルで利用できる主なパラメータ
  • *45 cache_classesパラメータがfalseの場合、リクエストごとにアプリケーションコードがリロードされますので、コードを変更した場合も再起動は不要です。ただし、レスポンス速度は低下しますので、本番環境では必ずtrueに設定してください。
  • *46 developmentモードの場合。productionモードでは:info。
  • *47 コマンドプロンプトから「rake time:zones:all」コマンドを実行することで、利用可能なタイムゾーンを確認できます。

2.5.3 アプリケーション固有の設定を定義する

 アプリケーション固有の設定情報は、/configフォルダ配下にmy_config.ymlのようなファイルを用意してまとめておくことをお勧めします。たとえば、以下のようにです。

YAML
全ての
環境で
共通の
 設定 
 
 
 
 開発 
環境の
 設定 
 
テスト
環境の
 設定 
 
 本番 
環境の
 設定 
COMMON: &COMMON
  author: "YAMADA, Yoshihiro"
  logo:
    source: "http://www.wings.msn.to/image/wings.jpg"
    width: 215
    height: 67

development:
  hoge: "dev"
  <<: *COMMON

test:
  hoge: "test"
  <<: *COMMON

production:
  hoge: "pro"
  <<: *COMMON
リスト2-11 my_config.yml

 COMMONキーの「&COMMON」は、キー全体を「COMMON」という名前で参照できるようにするための準備です。このように記述されたキーは、.ymlファイルの任意の場所から「<<: * 名前」で参照できます。

 このしくみを利用して、リスト2-11ではdevelopment、test、productionキーに共通の情報をCOMMONキーにまとめているわけです。YAML形式の便利な記法のひとつなので、覚えておくと良いでしょう。

 このように定義した設定ファイルは、初期化ファイルで起動時に明示的に読み込んでおく必要があります。/config/initializersフォルダ配下にmy_config.rbのようなファイルを用意します*48。他のファイルと同じく、文字コードはUTF-8です。

Ruby
MY_APP = YAML.load(
  File.read("#{Rails.root}/config/my_config.yml"))[Rails.env]
リスト2-12 my_config.rb
  • *48 名前に特に決まりはありません。内容を類推しやすい範囲で自由に決めてください。

 YAMLファイルを読み込むのは、YAML.loadメソッドの役割です。この例では、読み込んだ結果の中からRails.env(現在の環境)をキーに持つもの――たとえば、developmentキー配下の情報だけを取り出し、グローバル変数「MY_APP」にセットしています。

 変数MY_APPはコントローラ、ビューなど、すべてのファイルから参照できます。

Ruby
def app_var
  render text: MY_APP['logo']['source'] # …… 結果:http://www.wings.msn.to/image/wings.jpg
end
リスト2-13 hello_controller.rb

 アプリケーション共通で利用する情報は、このように単一のグローバル変数にまとめておくことで、名前空間を無駄に汚すことなく、また、簡単にアクセスできます。

【COLUMN】コードのやり残しをメモする - TODO、FIXME、OPTIMIZEアノテーション -

 TODO、FIXME、OPTIMIZEアノテーションを利用することで、開発中にやり残した事柄や、将来的に対応すべき案件を、あとから対応の忘れがないようにコード中にマーキングしておくことができます。具体的には、「# XXXX:」のようなコメント構文を利用して、以下のように記述します(XXXXはTODO、FIXME、OPTIMIZEのいずれか)。

Ruby
def validate_each(record, attribute, value)
  # TODO: あとから実装
end

 アノテーションはrake notesコマンドで列挙できます*49。特定のアノテーションだけを利用したい場合は、rake notes:todo、rake notes:fixme、rakenotes:optimizeも利用できます。

コマンドライン
> rake notes
(in C:/data/railbook)
app/models/isbn_validator.rb:
  * [ 29] [TODO] あとから実装

app/controllers/application_controller.rb:
  * [ 10] [FIXME] 国際化対応の仕様、再確認の必要あり
  • *49 Windows環境では、デフォルトでマルチバイト文字が化けます。「2.4 モデルの基本」の注44に従って、コマンドプロンプトの設定を変更してください。

 次回は「第9章 クライアントサイド開発 9.3 CoffeeScript」を説明します。

※以下では、本稿の前後を合わせて5回分(第5回~第9回)のみ表示しています。
 連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。

書籍転載:Ruby on Rails 4アプリケーションプログラミング
5. ビューの基本

Railsプログラミングの最大の特徴は「MVC」。Controllerの次はViewの基本をマスターしよう。そこで使われる「ERBテンプレート」とは?

書籍転載:Ruby on Rails 4アプリケーションプログラミング
6. モデルの基本

Railsプログラミングの最大の特徴は「MVC」。ControllerとViewをマスターしたら、最後にModelの基本を習得しよう。データベースをO/Rマッパーで活用する。

書籍転載:Ruby on Rails 4アプリケーションプログラミング
7. 【現在、表示中】≫ Railsの設定情報

「第1章 イントロダクション」~「第2章 Ruby on Railsの基本」までの転載が完了。まとめて読んでRails開発を学ぼう。

書籍転載:Ruby on Rails 4アプリケーションプログラミング
8. CoffeeScript入門(前編) ― CoffeeScriptの基本構文

Rubyプログラマーの必須知識「CoffeeScript」の基礎として、基本構文/変数とリテラル表現/演算子/制御構文を解説。書籍転載の8本目(「Part 3《応用編》 第9章 クライアントサイド開発」より)。

書籍転載:Ruby on Rails 4アプリケーションプログラミング
9. CoffeeScript入門(後編) ― 関数/オブジェクト指向構文/即時関数

CoffeeScriptの基礎を解説。今回は関数/オブジェクト指向構文/即時関数について説明する(書籍転載の9本目)。CoffeeScriptをマスターしよう。

サイトからのお知らせ

Twitterでつぶやこう!