最近、仕事でGrailsを使う機会があって、公式ドキュメント読んでいたのでConfig関係について、書く(自分用の備忘録も含めて・・・)
#Grailsの設定領域
主にビルドの設定とランタイムの設定の2つの領域に分かれている
ビルド設定は一般的にGradleとbuild.gradleで行う。
ランタイム設定は、デフォルトでは grails-app/conf/application.yml ファイル内で行われる
※Grails 2.0スタイルの設定を使用したい場合は、GroovyのConfigSlurper構文を使用して設定する。
なおGrails 2.0スタイルには2つの設定ファイルが用意されている
・grails-app/conf/application.groovy
・grails-app/conf/runtime.groovy
アプリケーションクラスに依存しない設定は、application.groovy、
アプリケーションクラスに依存する設定は、runtime.groovyを使用。
#application.ymlの設定項目
###grails.enable.native2ascii
Grails i18nプロパティファイルのnative2ascii変換を必要としない場合は、これをfalseに設定(デフォルト:true)。
###grails.views.default.codec
GSPのデフォルトのエンコーディング体制を設定
'none'、'html'、または'base64'(デフォルト:'none')のいずれか。XSS 攻撃のリスクを減らすためには、これを 'html' に設定。
###grails.views.gsp.encoding
GSP ソース ファイルに使用されるファイル エンコーディング (既定値: 'utf-8')。
###grails.mime.file.extensions
Content Negotiation で MIME タイプの判定にファイル拡張子を使うかどうか(デフォルトは true)。
###grails.mime.types
コンテンツネゴシエーションで使用する、サポートする MIME タイプのマップの設定。
###grails.serverURL
絶対リンクのサーバーURL 部分を指定する文字列で、サーバー名を含む。
この設定はリダイレクトでも使用される。
詳細はドキュメント参照
###grails.views.gsp.sitemesh.preprocess
SiteMesh の前処理を行うかどうか。
無効にするとページのレンダリングが遅くなるが、GSP ビューから生成された HTML を SiteMesh でパースする必要がある場合は、これを無効にする。
###grails.reload.excludes と grails.reload.include
これらのディレクティブを設定することで、プロジェクト固有のソースファイルのリロード動作を決定する。
それぞれのディレクティブは、開発中のアプリケーションを run-app コマンドで実行する際に、リロード動作から除外するか、または含めるべきプロジェクトのソースファイルのクラス名を表す文字列のリストを受け取る。
例えばgrails.reload.include ディレクティブが設定されている場合は、そのリストに含まれるクラスのみがリロードされる。
(grails.reload.excludesは逆に、含まているクラスを除いて、その他をリロードする)
#おまけ
###application.ymlの設定の読み込み
実行時の設定、つまりapplication.ymlで定義されている設定を読みたい場合は、コントローラやタグライブラリで変数として利用できるgrailsApplicationオブジェクトを使用する。
grailsApplicationオブジェクトのconfigプロパティは、Configインターフェースのインスタンスであり、
設定を読み取る多くのメソッドを提供している。
例えば、getPropertyメソッドは、プロパティ・タイプ(デフォルトのタイプはString)を指定したり、デフォルトのフォールバック値を提供したりしながら、コンフィギュレーション・プロパティを効率的に取得するのに便利。
実行時に動的に設定にアクセスすることは、アプリケーションのパフォーマンスにわずかな影響を与える可能性がある。
別のアプローチとしては、GrailsConfigurationAwareインターフェースを実装する方法がある。
こっちについては気が向いたら追記 or 記事投稿します。。。