Railsのconfigurationを調べてみた(3)
なに?
Railsのconfigurationはどんなものがあって、どういう挙動なのかを調べてみた。
今回調べたものはActionControllerに含まれるconfigだけである。
# ActionControllerに関するconfigurationは、以下のように`action_controller`をはさむ。
config.action_controller.assets_dir = 'public'
各項目の細かい挙動まで十分に調べきれてはいないが、よく設定する項目などは別途調べたい。
ばーじょん
- Ruby ruby 2.7.2p137
- Rails 6.1.2
いちらん
action_on_unpermitted_parameters(boolean, symbol)
Strong Parameterの挙動を指定する。
デフォルトはfalse
だが、development or testモードのときは:log
。
:log
の場合は、以下のようなログがpermit
時に出力される。
# `http://0.0.0.0:3000?hoge=1`というアクセスに対して
# `params.permit(:fuga)`を実行した場合
Unpermitted parameter: :hoge
:raise
の場合は、以下のようなエラーが発生する。
# `http://0.0.0.0:3000?hoge=1`というアクセスに対して
# `params.permit(:fuga)`を実行した場合
ActionController::UnpermittedParameters (found unpermitted parameter: :hoge):
always_permitted_parameters(array<string>)
Strong Parameterでチェックしないパラメータを指定する。
デフォルトは["controller", "action"]
。
controller, action
は、Rails内部でparams
に追加されるパラメータなので、本プロパティを設定する場合は、必ず設定した方が良いと思われる。
params.permit!.to_h
# {"hoge"=>"1", "controller"=>"dashboards", "action"=>"index"}
assets_dir(string)
???
デフォルトは#{Rails.root}/public
。
Rails内部では使われていない???
asset_host(string, proc)
用途はconfig.asset_host
と同じで、ActionView内ではこちらのプロパティが参照される。
デフォルトはconfig.asset_host
。
cache_store(symbol)
fragmentキャッシュで利用するキャッシュストアを指定する。
デフォルトはconfig.cache_store
で指定したstoreを使い回す。
default_protect_from_forgery(boolean)
CSRF対策のチェックを行うかを指定する。
デフォルトはfalse
ただし、5.2以降のデフォルト設定を読み込むとtrue
になる。
また、デフォルトの設定はprotect_from_forgery with: :exception
となる。
forgery_protection_origin_check(boolean)
HTTPヘッダーのOrigin
が、サイトのoriginと一致するかを指定する。
CSRF対策の一つ。
デフォルトはfalse
ただし、5.0以降のデフォルト設定を読み込むとtrue
になる。
javascripts_dir(string)
???
デフォルトは#{Rails.root}/public/javascripts
。
Rails内部では使われていない???
logger(object)
用途はconfig.logger
と同じで、ActionController内ではこちらのプロパティが参照される。
デフォルトはconfig.logger
。
permit_all_parameters(boolean)
Strong Parameterですべてのパラメータを許可するかを指定する。
デフォルトはfalse
。
perform_caching(boolean)
fragmentキャッシュやI18nのキャッシュなどを利用するかを指定する。
デフォルトはtrue
。
per_form_csrf_tokens(boolean)
FormごとにCSRFトークンを発行するかを指定する。
デフォルトはfalse
。
ただし、5.0以降のデフォルト設定を読み込むとtrue
になる。
relative_url_root(string)
用途はconfig.relative_url_root
と同じで、ActionController, ActionView内ではこちらのプロパティが参照される。
デフォルトはconfig.relative_url_root
。
stylesheets_dir(string)
???
デフォルトは#{Rails.root}/public/stylesheets
。
Rails内部では使われていない???
urlsafe_csrf_tokens(boolean)
CSRFトークンをURLセーフなフォーマットに変換するかを指定する。
デフォルトはfalse
。
ただし、6.1以降のデフォルト設定を読み込むとtrue
になる。
Discussion