Railsのconfigurationを調べてみた(4)
なに?
Railsのconfigurationはどんなものがあって、どういう挙動なのかを調べてみた。
今回調べたものはActionViewに含まれるconfigだけである。
# ActionViewに関するconfigurationは、以下のように`action_view`をはさむ。
config.action_view.embed_authenticity_token_in_remote_forms = true
各項目の細かい挙動まで十分に調べきれてはいないが、よく設定する項目などは別途調べたい。
ばーじょん
- Ruby ruby 2.7.2p137
- Rails 6.1.2
いちらん
annotate_rendered_view_with_filenames(boolean)
partial viewの前後にannotationを追加するかを指定する。
デフォルトはfalse
。
annotationは以下のように、BEGIN
とEND
で囲われる。
<!-- BEGIN app/views/dashboards/index.html.erb -->
<p>aa</p>
<!-- END app/views/dashboards/index.html.erb -->
Rails 6.1から追加された機能で、6.0以前はr7kamuraさんのgemを使うと同じことができる。
cache_template_loading(boolean)
viewテンプレートをcacheするかどうかを指定する。
デフォルトは未設定で、その場合はconfig.cache_classes
が設定される。
本プロパティをtrue
にすると、最初のアクセスでviewテンプレート(erbなど)がcacheされ、以降のアクセスはcacheからロードされる。
debug_missing_translation(boolean)
I18nのtranslationに失敗したときに、失敗した情報をspanタグで囲んで表示するかを指定する。
デフォルトはtrue
。
それぞれ以下のように出力される。
// erbに以下のような指定をしたとする
// <%= t('hoge') %>
// true
<span class="translation_missing" title="translation missing: en.hoge">Hoge</span>
// false
translation missing: en.hoge
default_enforce_utf8(boolean)
古いIEのために、Formにutf8
指定を埋め込むかどうかを指定する。
デフォルトはtrue
。
ただし、6.0以降のデフォルト設定を読み込むとfalse
になる。
TechRachoさんに、本プロパティによる背景等も詳しく書かれている。
true
にしたとき、Form配下に以下のinputが自動で出力される。
<input name="utf8" type="hidden" value="✓" />
embed_authenticity_token_in_remote_forms(boolean)
リモートフォーム(data-remote="true"
)のときに、authenticity_token
を埋め込むかを指定する。
デフォルトは未設定。
form_with_generates_remote_forms(boolean)
form生成時にリモートフォーム(data-remote="true"
)にするかどうかを指定する。
デフォルトはtrue
。
ただし、5.1以降のデフォルト設定を読み込むとtrue
になる。
ただし、6.1以降のデフォルト設定を読み込むとfalse
になる。
なお、個別に設定したい場合はform_with local: #{boolean}
で可能である。
form_with_generates_ids(boolean)
form_with
内のfield
に、id
属性を付けるかどうかを指定する。
デフォルトはfalse
。
ただし、5.2以降のデフォルト設定を読み込むとtrue
になる。
full_sanitizer(class)
HTMLタグをサニタイズ処理(#strip_tags
)をするクラスを指定する。
デフォルトはRails::Html::FullSanitizer
。
link_sanitizer(class)
HTMLタグをリンク情報をサニタイズ処理(#strip_links
)をするクラスを指定する。
デフォルトはRails::Html::LinkSanitizer
。
preload_links_header(boolean)
assetをプリロードするためのヒントを、HTTPヘッダーのLINK
に設定するかを指定する。
デフォルトは未設定。
ただし、6.1以降のデフォルト設定を読み込むとtrue
になる。
raise_on_missing_translations(boolean)
I18nのtranslationに失敗したときに、例外をあげるかを指定する。
デフォルトはfalse
。
なお、本プロパティは非推奨になっており、Rails 6.2で廃止予定。
i18n.raise_on_missing_translations
を利用すること。
safe_list_sanitizer(class)
特定のタグをサニタイズ処理(#sanitize, #sanitize_css
)をするクラスを指定する。
デフォルトはRails::Html::SafeListSanitizer
。
特定のタグは、sanitized_allowed_attributes, sanitized_allowed_tags
で指定する。
sanitized_allowed_attributes(array<string>)
サニタイズ処理で許可したいDOMのattributeを指定する。
デフォルトは以下の通り。
- abbr
- alt
- cite
- class
- datetime
- height
- href
- name
- src
- title
- width
- xml:lang
sanitized_allowed_tags(array<string>)
サニタイズ処理で許可したいDOMを指定する。
デフォルトは以下の通り。
- a
- abbr
- acronym
- address
- b
- big
- blockquote
- br
- cite
- code
- dd
- del
- dfn
- div
- dl
- dt
- em
- h1
- h2
- h3
- h4
- h5
- h6
- hr
- i
- img
- ins
- kbd
- li
- ol
- p
- pre
- samp
- small
- span
- strong
- sub
- sup
- tt
- ul
- var
Discussion