📝

Railsのconfigurationを調べてみた(4)

2021/02/18に公開

なに?

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は以下のように、BEGINENDで囲われる。

<!-- BEGIN app/views/dashboards/index.html.erb -->
<p>aa</p>
<!-- END app/views/dashboards/index.html.erb -->

Rails 6.1から追加された機能で、6.0以前はr7kamuraさんのgemを使うと同じことができる。
https://github.com/r7kamura/view_source_map

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さんに、本プロパティによる背景等も詳しく書かれている。
https://techracho.bpsinc.jp/hachi8833/2019_11_14/83047

trueにしたとき、Form配下に以下のinputが自動で出力される。

<input name="utf8" type="hidden" value="&#x2713;" />

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

HTMLタグをリンク情報をサニタイズ処理(#strip_links)をするクラスを指定する。
デフォルトはRails::Html::LinkSanitizer

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