PlayFramework

【Play】PlayFramework 2.2.1 GlobalSettingsの利用の実際【Scala】

More than 3 years have passed since last update.

ポイント

  • 2.1.xとは記載が変わっているので注意

    2.1.xの書き方
    2.2.xの書き方

  • 開発環境ではPlayFrameworkデフォルトのエラーページが表示したい。 本番環境でだけ、GlobalSettingsの設定が生きてほしい←これが重要

本番環境のGlobalSettingsの用意

[project-name]/app/ProductionGlobal.scala
import play.api._
import play.api.mvc._
import play.api.mvc.Results._
import scala.concurrent.Future

/**
 * User: takudo
 * Date: 2014/01/19
 * Time: 22:21
 */
object ProductionGlobal extends GlobalSettings{

  /**
   * エラーページを用意します。
   */
  override def onError(request: RequestHeader, ex: Throwable) = {
    //2.1.x系とは記述が異なるので注意。
    Future.successful(InternalServerError(
      //ビューファイルは適宜自分のところに用意してください。
      views.html.error.error()
    ))
  }

  /**
   * わかり易い例としてnot found ページを用意します。
   */
  override def onHandlerNotFound(request: RequestHeader) = {
    Future.successful(NotFound(
      views.html.error.not_found()
    ))
  }

}

設定ファイルの準備

  • application.confは開発用、本番用などで分ける。

例:application.confは共通設定、dev.confが開発用、prod.confが本番用とする。

[project-name]/conf/application.conf
application.secret="xxxxxxxxxx"

[project-name]/conf/dev.conf
include "application.conf"

hoge.hoge="開発環境特有の設定"

[project-name]/conf/prod.conf
include "application.conf"

hoge.hoge="本番環境特有の設定"

#これが重要
application.global="ProductionGlobal" #グローバルオブジェクトのオブジェクト名を記述する。

起動

開発環境

cd /path/to/project
play debug
> run "-Dconfig.file=conf/dev.conf"

ブラウザで、ルート定義していないURLにアクセスして、 デフォルトのAction not foundページが出る ことを確認する。

本番環境

cd /path/to/project
play clean stage
target/unversal/stage/bin/[project-name] -Dconfig.file=conf/prod.conf

ブラウザで、ルート定義していないURLにアクセスして、 自分の用意したNot foundページが出る ことを確認する。