rails /config ディレクトリ 設定まとめ


1. 概要

  • railsのいろんな設定について調てみようと思った
  • railsの/configディレクトリ以下を調べた内容をまとめる

参考資料:設定ファイルについて

2. /configディレクトリ以下の構成と意味

/config
├ /application.rb すべての環境で共通の設定
├ /environments 環境ごとの設定ファイルを格納
│ ├ /development.rb 開発環境固有
│ ├ /test.rb テスト環境固有
│ └ /production.rb 本番環境固有
├ /initializers 初期化処理やそれに関する設定情報
│ ├ /infiections.rb 単数形・複数形のルールを規定
│ ├ /mime_types.rb アプリで使用するファイルタイプ
│ ├ /secret_token.rb クッキーを署名とするためのトークン情報
│ └ /session_store.rb セッションを保存するための設定ファイル
├ /locales 国際化対応のためのリソースファイルを格納するディレクトリ
└ /database.yml データベースの設定

以下それぞれのファイルの詳細を記載

2.1. application.rb

タイムゾーンの設定や、デフォルトで使用する言語、アプリ起動時に読み込むディレクトリなどを指定

尚、以降で示すソースは以下の内容の間で設定することを前提とする

application.rb
module App
  class Application < Rails::Application
    ...
    #実際の設定がある場所
    ...
  end
end

2.1.1. アプリケーションで使用するタイムゾーン

アプリケーションの中で使用するタイムゾーンを設定
日本に合わせる場合は以下の設定を行う

application.rb
config.time_zone = 'Tokyo'

参考:タイムゾーンの設定

2.1.2. データベースの読み書きに使用するタイムゾーン

データベースの読み書きに使用するタイムゾーンがあるので設定
日本に合わせる場合は以下の設定を行う
デフォルトはutf(協定世界時)1

application.rb
config.active_record.default_timezone = :local

2.1.3. 日本語化ファイルの読み込み設定

エラーメッセージやメールタイトルを他の言語に翻訳する設定
i18nというRailsのモジュールを使用して設定する

application.rb
config.i18n.default_locale = :ja #デフォルトは:en

2.1.4. 自動読込パスの設定

Railsでは、Linuxの$PATHのような自動読込パス$LOAD_PATHを設定できる
これはRails6から組み込まれたZeitweik(ツァイトベルク)というオートロードシステムで実現される
Zeitweikを有効にするには以下を設定

application.rb
config.load_defaults 6.0 #Zeitweilモード有効
config.add_autoload_paths_to_load_path = false #Zeitweilモード有効の時falseが推奨

参考:application.rbの初期設定

2.2. /environments

環境固有の設定をする際にここに環境名.rbというファイルを作成する
環境固有の設定については省略

参考:railsでproduction起動の備忘録 production環境の設定
参考2:development? production? 開発環境ごとに処理を切り分けたい時 環境を追加するときの方法。尚、環境ごとの設定の具体例についてはない模様

2.3. /database.yml

データベースの環境ごと(development,test,production)の設定を行える
YAML形式で記述する
以下MySQLでの設定例
YAML形式の記法は別途解説

database.yml

common: &common #共通項をcommonとしてまとめる
  adapter: mysql2
  encoding: utf8
  reconnect: false
  pool: 5

development:
  <<: *common
  database: mysql_development
  username: root
  password:
  host: localhost

test:
  <<: *common
  database: mysql_test
  username: root
  password:
  host: localhost

production:
  <<: *common
  database: mysql_production
  username: root
  password:
  host: localhost

参考:MySQL用のデータベース設定ファイル
参考2:YAML/共通部分の切り出し


  1. 国際原子時 (TAI) に由来する原子時系の時刻で、UT1世界時に同調するべく調整された基準時刻 参考:Wikipedia/協定世界時