元祖若手のプログラミング奮闘記

元祖若手の奮闘記。主にメモ

Rails3.2.22.5 => 5.1.5 への道 コンフィグ編

  • config.whiny_nilsは、

nilにidメソッドが送信された場合に警告を表示するためのオプションでした。
たとえば@modelが初期化されていない状態で@model.idを取ろうとしたときに警告されます。
Rubyでは初期化されていないインスタンス変数はnilを返します。
nil.idを実行すれば普通にNoMethodErrorが表示されためRails4以降では不要となりました※(1)

  • config.cache_classesは、

アプリケーションのクラスやモジュールをリクエストごとに再読み込みするか(=キャッシュしないかどうか)どうかを指定します。

  • config.cache_classesのデフォルト値は、developmentモードではfalseなのでコードの更新がすぐ反映され、

testモードとproductionモードではtrueなので動作が高速になります。同時にthreadsafe!をオンにすることもできます。

  • config.eager_load は、

Rails のモデルやコントローラーであるクラス(app 以下にあるクラス、設定次第でこの限りでない)
をブート時に全て読み込むかどうか のフラグです。
全部読み込んでたら時間かかるため development = false
Rails起動(ブート)時に読んだ方が最初のリクエストを速く捌けるため production = true
がデフォルトです。

  • config.consider_all_requests_localは、

trueにすると、すべてのエラーをブラウザに表示をすることができる。
falseに設定すると、ブラウザには詳細情報が表示されない。

  • config.action_controller.perform_caching は、

「ページキャッシュ」「アクションキャッシュ」「フラグメントキャッシュ」といった
各キャッシュを使用する際に有効にする必要があります。
デフォルトではproduction環境でのみ有効になります。
Railsのフラグメントキャッシュは本体に組み込まれており、デフォルトで利用できます。
ページキャッシュやアクションキャッシュを利用するには、
Gemfileにactionpack-page_caching gemやactionpack-action_caching gemを追加する必要があります。※(3)

  • config.action_mailer.raise_delivery_errors は、

falseの場合メールが送れていなくてもエラーメッセージが表示されません。

  • active_support.deprecation_behavior は、

環境に対する非推奨レポート出力を設定します。
development環境ではデフォルトで:log、
production環境ではデフォルトで:notify、
test環境ではデフォルトで:stderrが指定されます。
config.active_support.deprecationに値が設定されていない場合、このイニシャライザは、
現在の環境に対応するconfig/environmentsファイルに値を設定するよう促すメッセージを出力します。
値の配列を設定することもできます

  • config.assets.debug は、

有効の場合、application.css/jsと個別のファイルの二重読み込みがされます。

  • config.assets.compressはRails 4で廃止されました。

CSSおよびJavaScriptアセットの圧縮を制御するには、
config.assets.css_compressorおよびconfig.assets.js_compressorを使用します。※(1)

  • config.assets.js_compressorは、

アセット圧縮方式の指定につかわれます。
sass-rails gemがGemfileに含まれていれば自動的にCSS圧縮に使用されます。
この場合config.assets.css_compressorオプションは設定されません。

  • config.assets.quiet は、

有効にするとアセット関連のログを出ないようになります。※(2)
Rails4の場合は
gem 'quiet_assets', group: :development
とGemfileに記述する必要があります。

  • config.action_controller.asset_hostは

アセットを置くためのホストを設定します。
これは、アセットをホストする場所としてアプリケーションサーバーの代りに
CDN(コンテンツ配信ネットワーク)を使用したい場合に便利です

  • config.assets.digestは

pipelineを通した後のファイルにつく数字をつけるかどうかです。
付けてあげるとキャッシュに残っているものも変更を加えることが出来るのでproductionではtrueが良さそう。

  • config.active_record.whitelist_attributes

Rails4以降はStrongParameterを使用するため廃止
Rails model でnew する際に
newで許可する値を制限することを
attr_accessibleで制御するかという設定※(1)

config.assets.compile = false
trueにすると、アセットが見つからないときに自動でコンパイルを試みてくれる。


■ config/initializers/配下のファイルについて

  • config/initializers/application_controller_renderer.rb

Rails 5からcontroller外でテンプレートをrender出来るようにする為の
ActionController::Rendererというクラスが追加されていて、
そこで使用するデフォルトのRack environmentを設定する為のinitializer。




※(1) Rails3のみもの
※(2) Rails5から追加されたもの

※(3)ページキャッシュ機能 アクションキャッシュ機能は、Rails 4本体から取り除かれ、gem化されました。
actionpack-page_caching gem (https://github.com/rails/actionpack-page_caching)
actionpack-action_caching gem (https://github.com/rails/actionpack-action_caching)をご覧ください。
新しい推奨メソッドについては、DHH's key-based cache expiration overview (http://signalvnoise.com/posts/3113-how-key-based-cache-expiration-works)をご覧ください。